gitextract_eqja_ilo/ ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── maven.yml │ ├── pages.yml │ └── submit-deps.yml ├── .gitignore ├── Dockerfile ├── LICENSE.txt ├── README.md ├── changelog.md ├── docs/ │ ├── Gemfile │ ├── _config.yml │ ├── eval_modes/ │ │ ├── compile.md │ │ ├── eager.md │ │ ├── index.md │ │ ├── options.md │ │ └── smt.md │ ├── index.md │ ├── lang_ref/ │ │ ├── goal_directed_eval.md │ │ ├── index.md │ │ ├── lang_basics.md │ │ ├── logical_formulas.md │ │ └── program_safety.md │ ├── pubs.md │ ├── starting.md │ └── tutorial/ │ └── index.md ├── examples/ │ ├── greeting.flg │ ├── liquid_types.flg │ ├── symeval.flg │ └── tutorial.flg ├── license-header ├── misc/ │ └── flg.vim ├── pom.xml └── src/ ├── main/ │ ├── antlr4/ │ │ └── edu/ │ │ └── harvard/ │ │ └── seas/ │ │ └── pl/ │ │ └── formulog/ │ │ └── parsing/ │ │ └── generated/ │ │ └── Formulog.g4 │ ├── java/ │ │ └── edu/ │ │ └── harvard/ │ │ └── seas/ │ │ └── pl/ │ │ └── formulog/ │ │ ├── Configuration.java │ │ ├── FormulogTester.java │ │ ├── Main.java │ │ ├── PrintPreference.java │ │ ├── ast/ │ │ │ ├── AbstractRule.java │ │ │ ├── AbstractTerm.java │ │ │ ├── BasicProgram.java │ │ │ ├── BasicRule.java │ │ │ ├── BindingType.java │ │ │ ├── BoolTerm.java │ │ │ ├── ComplexLiteral.java │ │ │ ├── ComplexLiterals.java │ │ │ ├── Constructor.java │ │ │ ├── Constructors.java │ │ │ ├── Expr.java │ │ │ ├── Exprs.java │ │ │ ├── FP32.java │ │ │ ├── FP64.java │ │ │ ├── Fold.java │ │ │ ├── FunctionCallFactory.java │ │ │ ├── Functor.java │ │ │ ├── I32.java │ │ │ ├── I64.java │ │ │ ├── LetFunExpr.java │ │ │ ├── Literal.java │ │ │ ├── MatchClause.java │ │ │ ├── MatchExpr.java │ │ │ ├── Model.java │ │ │ ├── NestedFunctionDef.java │ │ │ ├── OpaqueSet.java │ │ │ ├── Primitive.java │ │ │ ├── Program.java │ │ │ ├── Rule.java │ │ │ ├── SmtLibTerm.java │ │ │ ├── StringTerm.java │ │ │ ├── Term.java │ │ │ ├── Terms.java │ │ │ ├── UnificationPredicate.java │ │ │ ├── UserPredicate.java │ │ │ └── Var.java │ │ ├── codegen/ │ │ │ ├── CodeGen.java │ │ │ ├── CodeGenContext.java │ │ │ ├── CodeGenException.java │ │ │ ├── CodeGenUtil.java │ │ │ ├── DeltaFirstQueryPlanner.java │ │ │ ├── FuncsHpp.java │ │ │ ├── FunctorCodeGen.java │ │ │ ├── MainCpp.java │ │ │ ├── MatchCodeGen.java │ │ │ ├── NopQueryPlanner.java │ │ │ ├── PatternMatchTree.java │ │ │ ├── QueryPlanner.java │ │ │ ├── RuleTranslator.java │ │ │ ├── SmtParserCpp.java │ │ │ ├── SmtShimCpp.java │ │ │ ├── SouffleCodeGen.java │ │ │ ├── SymbolCpp.java │ │ │ ├── SymbolHpp.java │ │ │ ├── TemplateSrcFile.java │ │ │ ├── TermCodeGen.java │ │ │ ├── TermCpp.java │ │ │ ├── TypeCodeGen.java │ │ │ ├── TypeCpp.java │ │ │ └── ast/ │ │ │ ├── cpp/ │ │ │ │ ├── CppAccess.java │ │ │ │ ├── CppBaseTerm.java │ │ │ │ ├── CppBinop.java │ │ │ │ ├── CppBlock.java │ │ │ │ ├── CppCast.java │ │ │ │ ├── CppConst.java │ │ │ │ ├── CppCtor.java │ │ │ │ ├── CppDecl.java │ │ │ │ ├── CppExpr.java │ │ │ │ ├── CppExprFromString.java │ │ │ │ ├── CppFor.java │ │ │ │ ├── CppForEach.java │ │ │ │ ├── CppFuncCall.java │ │ │ │ ├── CppGoto.java │ │ │ │ ├── CppIf.java │ │ │ │ ├── CppLabel.java │ │ │ │ ├── CppMethodCall.java │ │ │ │ ├── CppNewArray.java │ │ │ │ ├── CppNullptr.java │ │ │ │ ├── CppReturn.java │ │ │ │ ├── CppSeq.java │ │ │ │ ├── CppStmt.java │ │ │ │ ├── CppSubscript.java │ │ │ │ ├── CppUnop.java │ │ │ │ ├── CppVar.java │ │ │ │ ├── CppVectorLiteral.java │ │ │ │ └── CppWhile.java │ │ │ └── souffle/ │ │ │ ├── SAtom.java │ │ │ ├── SDestructorBody.java │ │ │ ├── SExprBody.java │ │ │ ├── SFunctorBody.java │ │ │ ├── SFunctorCall.java │ │ │ ├── SInfixBinaryOpAtom.java │ │ │ ├── SInt.java │ │ │ ├── SIntList.java │ │ │ ├── SIntListType.java │ │ │ ├── SIntType.java │ │ │ ├── SLit.java │ │ │ ├── SRule.java │ │ │ ├── SRuleMode.java │ │ │ ├── STerm.java │ │ │ ├── SType.java │ │ │ └── SVar.java │ │ ├── db/ │ │ │ ├── BindingTypeArrayWrapper.java │ │ │ ├── ExampleComparator.java │ │ │ ├── IndexedFactDb.java │ │ │ ├── IndexedFactDbBuilder.java │ │ │ ├── MinChainCover.java │ │ │ ├── MinIndex.java │ │ │ ├── SortedIndexedFactDb.java │ │ │ └── TupleComparatorGenerator.java │ │ ├── eval/ │ │ │ ├── AbstractStratumEvaluator.java │ │ │ ├── EagerStratumEvaluator.java │ │ │ ├── EvalUtil.java │ │ │ ├── Evaluation.java │ │ │ ├── EvaluationException.java │ │ │ ├── EvaluationResult.java │ │ │ ├── IndexedRule.java │ │ │ ├── PredicateFunctionSetter.java │ │ │ ├── RoundBasedStratumEvaluator.java │ │ │ ├── SemiNaiveEvaluation.java │ │ │ ├── SemiNaiveRule.java │ │ │ ├── SmtCallFinder.java │ │ │ ├── StratumEvaluator.java │ │ │ └── UncheckedEvaluationException.java │ │ ├── functions/ │ │ │ ├── BuiltInFunctionDefFactory.java │ │ │ ├── DummyFunctionDef.java │ │ │ ├── FunctionDef.java │ │ │ ├── FunctionDefManager.java │ │ │ ├── OpaqueSetOps.java │ │ │ ├── PredicateFunctionDef.java │ │ │ ├── PrimitiveConversions.java │ │ │ ├── RecordAccessor.java │ │ │ └── UserFunctionDef.java │ │ ├── magic/ │ │ │ ├── AdornedSymbol.java │ │ │ ├── Adornments.java │ │ │ └── MagicSetTransformer.java │ │ ├── parsing/ │ │ │ ├── FactFileParser.java │ │ │ ├── Identifier.java │ │ │ ├── ParseException.java │ │ │ ├── Parser.java │ │ │ ├── ParsingContext.java │ │ │ ├── ParsingUtil.java │ │ │ ├── TermExtractor.java │ │ │ ├── TopLevelParser.java │ │ │ ├── TypeExtractor.java │ │ │ ├── UncheckedParseException.java │ │ │ ├── VariableCheckPass.java │ │ │ └── VariableCheckPassException.java │ │ ├── smt/ │ │ │ ├── AbstractSmtLibSolver.java │ │ │ ├── BestMatchSmtManager.java │ │ │ ├── BoolectorProcessFactory.java │ │ │ ├── CallAndResetSolver.java │ │ │ ├── CheckSatAssumingSolver.java │ │ │ ├── Cvc4ProcessFactory.java │ │ │ ├── DoubleCheckingSolver.java │ │ │ ├── ExternalSolverProcessFactory.java │ │ │ ├── NotThreadSafeQueueSmtManager.java │ │ │ ├── PerThreadSmtManager.java │ │ │ ├── PushPopNaiveSolver.java │ │ │ ├── PushPopSolver.java │ │ │ ├── QueueSmtManager.java │ │ │ ├── SingleShotSolver.java │ │ │ ├── SmtLibParser.java │ │ │ ├── SmtLibShim.java │ │ │ ├── SmtLibSolver.java │ │ │ ├── SmtResult.java │ │ │ ├── SmtStatus.java │ │ │ ├── SmtStrategy.java │ │ │ ├── YicesProcessFactory.java │ │ │ └── Z3ProcessFactory.java │ │ ├── symbols/ │ │ │ ├── AbstractSymbol.java │ │ │ ├── AbstractTypedSymbol.java │ │ │ ├── AbstractWrappedRelationSymbol.java │ │ │ ├── BuiltInConstructorGetterSymbol.java │ │ │ ├── BuiltInConstructorSymbol.java │ │ │ ├── BuiltInConstructorTesterSymbol.java │ │ │ ├── BuiltInFunctionSymbol.java │ │ │ ├── BuiltInTypeSymbol.java │ │ │ ├── ConstructorSymbol.java │ │ │ ├── ConstructorSymbolImpl.java │ │ │ ├── ConstructorSymbolType.java │ │ │ ├── FunctionSymbol.java │ │ │ ├── GlobalSymbolManager.java │ │ │ ├── MutableRelationSymbol.java │ │ │ ├── PredicateFunctionSymbol.java │ │ │ ├── RecordSymbol.java │ │ │ ├── RelationSymbol.java │ │ │ ├── Symbol.java │ │ │ ├── SymbolComparator.java │ │ │ ├── SymbolManager.java │ │ │ ├── TypeSymbol.java │ │ │ ├── TypeSymbolImpl.java │ │ │ ├── TypeSymbolType.java │ │ │ ├── TypedSymbol.java │ │ │ ├── WrappedRelationSymbol.java │ │ │ └── parameterized/ │ │ │ ├── AbstractParameterizedSymbol.java │ │ │ ├── BuiltInConstructorSymbolBase.java │ │ │ ├── FunctorBase.java │ │ │ ├── Param.java │ │ │ ├── ParamKind.java │ │ │ ├── ParameterizedConstructorSymbol.java │ │ │ ├── ParameterizedSymbol.java │ │ │ └── SymbolBase.java │ │ ├── types/ │ │ │ ├── BuiltInTypes.java │ │ │ ├── FunctorType.java │ │ │ ├── IndexedType.java │ │ │ ├── TypeAlias.java │ │ │ ├── TypeChecker.java │ │ │ ├── TypeException.java │ │ │ ├── TypeManager.java │ │ │ ├── Types.java │ │ │ └── WellTypedProgram.java │ │ ├── unification/ │ │ │ ├── EmptySubstitution.java │ │ │ ├── OverwriteSubstitution.java │ │ │ ├── SimpleSubstitution.java │ │ │ ├── Substitution.java │ │ │ └── Unification.java │ │ ├── util/ │ │ │ ├── AbstractFJPTask.java │ │ │ ├── CompositeIterable.java │ │ │ ├── CountingFJP.java │ │ │ ├── CountingFJPImpl.java │ │ │ ├── Dataset.java │ │ │ ├── DedupWorkList.java │ │ │ ├── EnumerableThreadLocal.java │ │ │ ├── ExceptionalFunction.java │ │ │ ├── FunctorUtil.java │ │ │ ├── IntArrayWrapper.java │ │ │ ├── MockCountingFJP.java │ │ │ ├── Pair.java │ │ │ ├── SharedLong.java │ │ │ ├── StackMap.java │ │ │ ├── TodoException.java │ │ │ ├── Triple.java │ │ │ ├── UnionFind.java │ │ │ ├── Util.java │ │ │ └── sexp/ │ │ │ ├── SExp.java │ │ │ ├── SExpAtom.java │ │ │ ├── SExpException.java │ │ │ ├── SExpLexer.java │ │ │ ├── SExpList.java │ │ │ ├── SExpParser.java │ │ │ └── SExpToken.java │ │ └── validating/ │ │ ├── FunctionDefValidation.java │ │ ├── InvalidProgramException.java │ │ ├── Stratifier.java │ │ ├── Stratum.java │ │ ├── ValidRule.java │ │ └── ast/ │ │ ├── Assignment.java │ │ ├── Check.java │ │ ├── Destructor.java │ │ ├── SimpleLiteral.java │ │ ├── SimpleLiteralExnVisitor.java │ │ ├── SimpleLiteralTag.java │ │ ├── SimpleLiteralVisitor.java │ │ ├── SimplePredicate.java │ │ └── SimpleRule.java │ └── resources/ │ └── codegen/ │ ├── .gitignore │ ├── CMakeLists.txt │ └── src/ │ ├── ConcurrentHashMap.hpp │ ├── Symbol.cpp │ ├── Symbol.hpp │ ├── Term.cpp │ ├── Term.hpp │ ├── Tuple.hpp │ ├── Type.cpp │ ├── Type.hpp │ ├── formulog.dl │ ├── funcs.hpp │ ├── functors.cpp │ ├── functors.h │ ├── globals.h │ ├── main.cpp │ ├── parser.cpp │ ├── parser.hpp │ ├── set.cpp │ ├── set.hpp │ ├── smt_parser.cpp │ ├── smt_parser.hpp │ ├── smt_shim.cpp │ ├── smt_shim.h │ ├── smt_solver.cpp │ ├── smt_solver.h │ └── time.hpp └── test/ ├── java/ │ └── edu/ │ └── harvard/ │ └── seas/ │ └── pl/ │ └── formulog/ │ ├── codegen/ │ │ ├── CodeGenTester.java │ │ ├── CompiledEagerEvaluationTest.java │ │ ├── CompiledEagerMagicSetTest.java │ │ ├── CompiledSemiNaiveEvaluationTest.java │ │ ├── CompiledSemiNaiveMagicSetTest.java │ │ └── NopTester.java │ ├── eval/ │ │ ├── AbstractEvaluationTest.java │ │ ├── AbstractTester.java │ │ ├── CommonEvaluationTest.java │ │ ├── EagerSemiNaiveEvaluationTest.java │ │ ├── InterpretedSemiNaiveTester.java │ │ ├── SemiNaiveEvaluationTest.java │ │ └── Tester.java │ ├── magic/ │ │ ├── CommonMagicSetTest.java │ │ ├── EagerSemiNaiveMagicSetTest.java │ │ └── SemiNaiveMagicSetTest.java │ ├── parsing/ │ │ └── ParsingTest.java │ ├── types/ │ │ └── TypeCheckingTest.java │ └── validating/ │ ├── SemiNaiveValidatingTest.java │ └── ValidatingTest.java └── resources/ ├── test001_ok.flg ├── test002_ok.flg ├── test003_ok.flg ├── test004_ok.flg ├── test005_ok.flg ├── test006_ok.flg ├── test007_ok.flg ├── test008_ok.flg ├── test009_ok.flg ├── test010_ok.flg ├── test011_ok.flg ├── test012_bd.flg ├── test013_ok.flg ├── test014_ok.flg ├── test015_ok.flg ├── test016_ok.flg ├── test017_ok.flg ├── test018_ok.flg ├── test019_ok.flg ├── test020_ok.flg ├── test021_ok.flg ├── test022_ok.flg ├── test023_ok.flg ├── test024_ok.flg ├── test025_bd.flg ├── test026_bd.flg ├── test027_ok.flg ├── test028_ok.flg ├── test029_ok.flg ├── test030_ok.flg ├── test031_ok.flg ├── test032_ok.flg ├── test033_ok.flg ├── test034_ok.flg ├── test035_ok.flg ├── test036_ok.flg ├── test037_ok.flg ├── test038_ok.flg ├── test039_ok.flg ├── test040_ok.flg ├── test041_ok.flg ├── test042_ok.flg ├── test043_ok.flg ├── test044_ok.flg ├── test045_ok.flg ├── test046_ok.flg ├── test047_ok.flg ├── test048_ok.flg ├── test049_ok.flg ├── test050_bd.flg ├── test051_bd.flg ├── test052_bd.flg ├── test053_ok.flg ├── test054_ok.flg ├── test055_bd.flg ├── test056_ok.flg ├── test057_ok.flg ├── test058_ok.flg ├── test059_ok.flg ├── test060_ok.flg ├── test061_ok.flg ├── test062_ok.flg ├── test063_ok.flg ├── test064_ok.flg ├── test065_ok.flg ├── test066_ok.flg ├── test067_ok.flg ├── test068_ok.flg ├── test069_ok.flg ├── test070_ok.flg ├── test071_ok.flg ├── test072_ok.flg ├── test073_ok.flg ├── test074_ok.flg ├── test075_ok.flg ├── test076_ok.flg ├── test077_ok.flg ├── test078_ok.flg ├── test079_ok.flg ├── test080_bd.flg ├── test081_ok.flg ├── test082_ok.flg ├── test083_ok.flg ├── test084_ok.flg ├── test085_ok.flg ├── test086_ok.flg ├── test087_ok.flg ├── test088_ok.flg ├── test089_ok.flg ├── test090_ok.flg ├── test091_bd.flg ├── test092_ok.flg ├── test093_ok.flg ├── test094_ok.flg ├── test095_ok.flg ├── test096_ok.flg ├── test097_ok.flg ├── test098_bd.flg ├── test099_ok.flg ├── test100_ok.flg ├── test101_ok.flg ├── test102_ok.flg ├── test103_ok.flg ├── test104_ok.flg ├── test105_ok.flg ├── test106_ok.flg ├── test107_ok.flg ├── test108_ok.flg ├── test109_ok.flg ├── test110_ok.flg ├── test111_ok.flg ├── test112_ok.flg ├── test113_ok.flg ├── test114_ok.flg ├── test115_ok.flg ├── test116_ok.flg ├── test117_ok.flg ├── test118_bd.flg ├── test119_ok.flg ├── test120_ok.flg ├── test121_ok.flg ├── test122_ok.flg ├── test123_ok.flg ├── test124_ok.flg ├── test125_ok.flg ├── test126_ok.flg ├── test127_ok.flg ├── test128_ok.flg ├── test129_ok.flg ├── test130_bd.flg ├── test131_bd.flg ├── test132_bd.flg ├── test133_ok.flg ├── test134_ok.flg ├── test135_ok.flg ├── test136_ok.flg ├── test137_ok.flg ├── test138_ok.flg ├── test139_ok.flg ├── test140_ok.flg ├── test141_ok.flg ├── test142_ok.flg ├── test143_ok.flg ├── test144_ok.flg ├── test145_ok.flg ├── test146_ok.flg ├── test147_ok.flg ├── test148_ok.flg ├── test149_ok.flg ├── test150_ok.flg ├── test151_ok.flg ├── test152_ok.flg ├── test153_ok.flg ├── test154_ok.flg ├── test155_ok.flg ├── test156_ok.flg ├── test157_ok.flg ├── test158_ok.flg ├── test159_ok.flg ├── test160_ok.flg ├── test161_ok.flg ├── test162_ok.flg ├── test163_ok.flg ├── test164_ok.flg ├── test165_ok.flg ├── test166_ok.flg ├── test167_ok.flg ├── test168_ok.flg ├── test169_ok.flg ├── test170_ok.flg ├── test171_ok.flg ├── test172_ok.flg ├── test173_ok.flg ├── test174_ok.flg ├── test175_ok.flg ├── test176_ok.flg ├── test177_ok.flg ├── test178_ok.flg ├── test179_ok.flg ├── test180_ok.flg ├── test181_ok.flg ├── test182_ok.flg ├── test183_ok.flg ├── test184_ok.flg ├── test185_bd.flg ├── test186_ok.flg ├── test187_ok.flg ├── test188_bd.flg ├── test189_ok.flg ├── test190_ok.flg ├── test191_input/ │ ├── complex_terms.tsv │ ├── names.tsv │ └── numbers.tsv ├── test191_ok.flg ├── test192_ok.flg ├── test193_ok.flg ├── test217_bd.flg ├── test218_bd.flg ├── test219_ok.flg ├── test220_ok.flg ├── test221_ok.flg ├── test222_ok.flg ├── test223_ok.flg ├── test224_ok.flg ├── test225_ok.flg ├── test226_ok.flg ├── test227_ok.flg ├── test228_ok.flg ├── test229_ok.flg ├── test230_ok.flg ├── test231_ok.flg ├── test232_ok.flg ├── test233_ok.flg ├── test234_ok.flg ├── test235_ok.flg ├── test236_ok.flg ├── test237_ok.flg ├── test238_ok.flg ├── test240_ok.flg ├── test241_ok.flg ├── test242_ok.flg ├── test243_ok.flg ├── test244_ok.flg ├── test245_ok.flg ├── test248_bd.flg ├── test249_ok.flg ├── test250_ok.flg ├── test251_bd.flg ├── test252_ok.flg ├── test253_ok.flg ├── test254_ok.flg ├── test255_bd.flg ├── test256_ok.flg ├── test257_ok.flg ├── test258_ok.flg ├── test259_ok.flg ├── test260_ok.flg ├── test261_ok.flg ├── test262_ok.flg ├── test263_ok.flg ├── test264_ok.flg ├── test265_ok.flg ├── test266_bd.flg ├── test267_ok.flg ├── test268_bd.flg ├── test269_bd.flg ├── test270_bd.flg ├── test271_bd.flg ├── test272_bd.flg ├── test273_ok.flg ├── test274_ok.flg ├── test275_ok.flg ├── test276_inputA/ │ └── foo.tsv ├── test276_inputB/ │ └── foo.tsv ├── test276_ok.flg ├── test277_ok.flg ├── test278_ok.flg ├── test279_ok.flg ├── test280_ok.flg ├── test281_ok.flg ├── test282_ok.flg ├── test283_ok.flg ├── test284_ok.flg ├── test285_ok.flg ├── test286_ok.flg ├── test287_ok.flg ├── test288_ok.flg ├── test289_ok.flg ├── test290_ok.flg ├── test291_ok.flg ├── test292_ok.flg ├── test293_ok.flg ├── test294_ok.flg ├── test295_bd.flg ├── test296_bd.flg ├── test297_ok.flg ├── test298_ok.flg ├── test299_ok.flg ├── test300_ok.flg ├── test301_ok.flg ├── test302_bd.flg ├── test303_ok.flg ├── test304_ok.flg ├── test305_ok.flg ├── test306_ok.flg ├── test307_ok.flg ├── test308_ok.flg ├── test309_ok.flg ├── test310_ok.flg ├── test311_ok.flg ├── test312_bd.flg ├── test313_bd.flg ├── test314_bd.flg ├── test315_bd.flg ├── test316_ok.flg ├── test317_ok.flg ├── test318_ok.flg ├── test319_ok.flg ├── test320_ok.flg ├── test321_ok.flg ├── test322_bd.flg ├── test323_ok.flg ├── test324_ok.flg ├── test325_ok.flg ├── test326_ok.flg ├── test327_bd.flg ├── test328_ok.flg ├── test329_ok.flg ├── test330_ok.flg ├── test331_ok.flg ├── test332_ok.flg ├── test333_bd.flg ├── test334_ok.flg ├── test335_bd.flg ├── test336_ok.flg ├── test337_ok.flg ├── test338_ok.flg ├── test339_ok.flg ├── test340_ok.flg ├── test341_bd.flg ├── test342_bd.flg ├── test343_bd.flg ├── test344_bd.flg └── test345_ok.flg