mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 05:18:44 +00:00
* Generify, needs some testing and review * Remove unnecessary change * Whoops, ? capture that type * Misread the docs, whoops * More permissible arithmetic operations * Implement believed Optimize generics * Missed a few generics * More permissible expr for arrays in parameters * More permissible expr for bitvecs in parameters * More permissible expr for bools in parameters * More permissible expr for fps in parameters * More permissible expr for fprms in parameters * More permissible expr for ints in parameters * More permissible expr for reals in parameters * Undo breaking name conflict due to type erasure; see notes * Whoops, fix typing of ReExpr * Sort corrections for Re, Seq * More permissible expr for regular expressions in parameters * Fix name conflict between sequences and regular expressions; see notes * Minor typo, big implications! * Make Constructor consistent, associate captured types with other unknown capture types for datatype consistency * More expressive; outputs of multiple datatype definitions are only known to be sort, not capture, and Constructor.of should make a capture * Be less dumb and just type it a little differently * Update examples, make sure to type Expr and FuncDecl sort returns * General fixups * Downgrade java version, make it only for the generic support, remove var and Expr[]::new construction * Turns out Java 8 hadn't figured out how to do stream generics yet. Didn't even show up in my IDE, weird
64 lines
1.2 KiB
Java
64 lines
1.2 KiB
Java
/**
|
|
Copyright (c) 2012-2014 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Pattern.java
|
|
|
|
Abstract:
|
|
|
|
Author:
|
|
|
|
@author Christoph Wintersteiger (cwinter) 2012-03-15
|
|
|
|
Notes:
|
|
|
|
**/
|
|
|
|
package com.microsoft.z3;
|
|
|
|
/**
|
|
* Patterns comprise a list of terms. The list should be non-empty. If the list
|
|
* comprises of more than one term, it is also called a multi-pattern.
|
|
**/
|
|
public class Pattern extends AST
|
|
{
|
|
/**
|
|
* The number of terms in the pattern.
|
|
**/
|
|
public int getNumTerms()
|
|
{
|
|
return Native.getPatternNumTerms(getContext().nCtx(), getNativeObject());
|
|
}
|
|
|
|
/**
|
|
* The terms in the pattern.
|
|
*
|
|
* @throws Z3Exception
|
|
**/
|
|
public Expr<?>[] getTerms()
|
|
{
|
|
|
|
int n = getNumTerms();
|
|
Expr<?>[] res = new Expr[n];
|
|
for (int i = 0; i < n; i++)
|
|
res[i] = Expr.create(getContext(),
|
|
Native.getPattern(getContext().nCtx(), getNativeObject(), i));
|
|
return res;
|
|
}
|
|
|
|
/**
|
|
* A string representation of the pattern.
|
|
**/
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return Native.patternToString(getContext().nCtx(), getNativeObject());
|
|
}
|
|
|
|
Pattern(Context ctx, long obj)
|
|
{
|
|
super(ctx, obj);
|
|
}
|
|
}
|