gitextract_4_a407x8/ ├── .gitattributes ├── .gitignore ├── Armada/ │ ├── .gitignore │ ├── ArmadaCommonDefinitions.dfy │ ├── spec/ │ │ └── refinement.s.dfy │ ├── strategies/ │ │ ├── chl/ │ │ │ ├── AtomicConcurrentHoareLogic.i.dfy │ │ │ ├── AtomicConcurrentHoareLogicLemmas.i.dfy │ │ │ ├── AtomicConcurrentHoareLogicSpec.i.dfy │ │ │ ├── ConcurrentHoareLogic.i.dfy │ │ │ ├── ConcurrentHoareLogicLemmas.i.dfy │ │ │ └── ConcurrentHoareLogicSpec.i.dfy │ │ ├── combining/ │ │ │ ├── ArmadaCombining.i.dfy │ │ │ ├── ArmadaCombiningLemmas.i.dfy │ │ │ └── ArmadaCombiningSpec.i.dfy │ │ ├── generic/ │ │ │ ├── GenericArmadaAtomic.i.dfy │ │ │ ├── GenericArmadaLemmas.i.dfy │ │ │ ├── GenericArmadaPlus.i.dfy │ │ │ ├── GenericArmadaSpec.i.dfy │ │ │ ├── LiftAtomicToAtomic.i.dfy │ │ │ ├── LiftFromAtomic.i.dfy │ │ │ └── LiftToAtomic.i.dfy │ │ ├── invariants.i.dfy │ │ ├── reduction/ │ │ │ ├── AtomicReduction.i.dfy │ │ │ ├── AtomicReductionLemmas.i.dfy │ │ │ ├── AtomicReductionSpec.i.dfy │ │ │ ├── CohenLamportReduction.i.dfy │ │ │ ├── CohenLamportReductionLemmas.i.dfy │ │ │ ├── CohenLamportReductionSpec.i.dfy │ │ │ ├── RefinementViaReduction.i.dfy │ │ │ ├── RefinementViaReductionLemmas.i.dfy │ │ │ └── RefinementViaReductionSpec.i.dfy │ │ ├── refinement/ │ │ │ ├── AnnotatedBehavior.i.dfy │ │ │ ├── GeneralRefinementLemmas.i.dfy │ │ │ └── RefinementConvolution.i.dfy │ │ ├── starweakening/ │ │ │ ├── StarWeakening.i.dfy │ │ │ └── StarWeakeningSpec.i.dfy │ │ ├── tsoelimination/ │ │ │ ├── TSOElimination.i.dfy │ │ │ ├── TSOEliminationLemmas.i.dfy │ │ │ └── TSOEliminationSpec.i.dfy │ │ ├── varhiding/ │ │ │ ├── VarHiding.i.dfy │ │ │ └── VarHidingSpec.i.dfy │ │ ├── varintro/ │ │ │ ├── VarIntro.i.dfy │ │ │ └── VarIntroSpec.i.dfy │ │ └── weakening/ │ │ ├── Weakening.i.dfy │ │ └── WeakeningSpec.i.dfy │ └── util/ │ ├── collections/ │ │ ├── MapSum.i.dfy │ │ ├── SeqSum.i.dfy │ │ ├── maps.i.dfy │ │ ├── maps.s.dfy │ │ ├── seqs.i.dfy │ │ ├── seqs.s.dfy │ │ └── sets.i.dfy │ ├── functions.i.dfy │ ├── math/ │ │ ├── .gitignore │ │ ├── div.i.dfy │ │ ├── div_auto.i.dfy │ │ ├── div_auto_proofs.i.dfy │ │ ├── div_boogie.i.dfy │ │ ├── div_def.i.dfy │ │ ├── div_nonlinear.i.dfy │ │ ├── mod_auto.i.dfy │ │ ├── mod_auto_proofs.i.dfy │ │ ├── mul.i.dfy │ │ ├── mul_auto.i.dfy │ │ ├── mul_auto_proofs.i.dfy │ │ ├── mul_nonlinear.i.dfy │ │ ├── power.i.dfy │ │ └── powers.i.dfy │ ├── option.s.dfy │ └── types.s.dfy ├── BUILD.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── NOTICE.txt ├── README.md ├── SConstruct1 ├── SConstruct2 ├── SECURITY.md ├── Source/ │ ├── Armada/ │ │ ├── AbstractProofGenerator.cs │ │ ├── Armada.atg │ │ ├── ArmadaAst.cs │ │ ├── ArmadaExpr.cs │ │ ├── ArmadaHelper.cs │ │ ├── ArmadaMain.cs │ │ ├── ArmadaOptions.cs │ │ ├── ArmadaParser.cs │ │ ├── ArmadaPipeline.csproj │ │ ├── ArmadaRValue.cs │ │ ├── ArmadaStructs.cs │ │ ├── AssumeIntro.cs │ │ ├── AtomicSpec.cs │ │ ├── BigIntegerParser.cs │ │ ├── Cloner.cs │ │ ├── Combining.cs │ │ ├── Compiler-clight.cs │ │ ├── Compiler.cs │ │ ├── ConstraintCollector.cs │ │ ├── DeclCollector.cs │ │ ├── ExpressionBuilder.cs │ │ ├── GlobalVarHiding.cs │ │ ├── GlobalVarIntro.cs │ │ ├── NextRoutine.cs │ │ ├── PathPrinter.cs │ │ ├── PredicateBuilder.cs │ │ ├── Printer.cs │ │ ├── Prioritization.cs │ │ ├── ProofFiles.cs │ │ ├── ProofGenerationParams.cs │ │ ├── ProofGenerator.cs │ │ ├── Reduction.cs │ │ ├── RefinementTransformer.cs │ │ ├── Reporting.cs │ │ ├── ResolutionContext.cs │ │ ├── Resolver.cs │ │ ├── Rewriter.cs │ │ ├── SccGraph.cs │ │ ├── StackVarHiding.cs │ │ ├── StackVarIntro.cs │ │ ├── StarWeakening.cs │ │ ├── StateMachineTranslator.cs │ │ ├── StepPrinter.cs │ │ ├── StraightlineBehavior.cs │ │ ├── SymbolTable.cs │ │ ├── TSOElimination.cs │ │ ├── Translator.cs │ │ ├── Triggers/ │ │ │ ├── QuantifierSplitter.cs │ │ │ ├── QuantifiersCollection.cs │ │ │ ├── QuantifiersCollector.cs │ │ │ ├── TriggerExtensions.cs │ │ │ ├── TriggerUtils.cs │ │ │ └── TriggersCollector.cs │ │ ├── Util.cs │ │ ├── VarHiding.cs │ │ ├── VarIntro.cs │ │ └── Weakening.cs │ ├── Armada.sln │ ├── ArmadaDriver/ │ │ ├── ArmadaDriver.cs │ │ └── ArmadaDriver.csproj │ ├── Directory.Build.props │ └── dotnet-tools.json ├── Test/ │ ├── armada-parser/ │ │ ├── .gitignore │ │ ├── OGcounter.arm │ │ ├── scheduler_atomic.arm │ │ ├── scheduler_impl.arm │ │ ├── scheduler_simplify.arm │ │ ├── scheduler_spec.arm │ │ ├── test-var-hiding-fail.arm │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ ├── test4.arm │ │ ├── test5.arm │ │ ├── test6.arm │ │ └── test7.arm │ ├── assume-intro/ │ │ ├── .gitignore │ │ ├── ABHelpers.dfy │ │ ├── test.arm │ │ ├── test2.arm │ │ └── test3.arm │ ├── barrier/ │ │ ├── .gitignore │ │ ├── barrier.arm │ │ └── extra.dfy │ ├── bitvector/ │ │ ├── .gitignore │ │ ├── bv.dfy │ │ └── test.arm │ ├── clight/ │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── barrier.arm │ │ ├── bench/ │ │ │ ├── bench_armada.c │ │ │ ├── bench_armada_gcc.c │ │ │ ├── bench_lfds.c │ │ │ └── bench_sound_queue.c │ │ ├── extern.h │ │ ├── failed/ │ │ │ ├── failed_0.c │ │ │ └── failed_1.c │ │ ├── lock.arm │ │ ├── queue.arm │ │ ├── sqrt.arm │ │ └── upload.sh │ ├── combining/ │ │ ├── .gitignore │ │ └── test.arm │ ├── counter/ │ │ ├── .gitignore │ │ ├── A.arm │ │ ├── AB.arm │ │ ├── B.arm │ │ ├── BC.arm │ │ ├── C.arm │ │ ├── CD.arm │ │ ├── D.arm │ │ ├── DE.arm │ │ ├── E.arm │ │ ├── EF.arm │ │ ├── F.arm │ │ ├── FG.arm │ │ ├── G.arm │ │ ├── GI.arm │ │ ├── I.arm │ │ ├── IJ.arm │ │ ├── J.arm │ │ ├── SharedStructs.arm │ │ ├── Z.arm │ │ └── extra.dfy │ ├── estimate-sqrt/ │ │ ├── .gitignore │ │ └── sqrt.arm │ ├── mcslock/ │ │ ├── .gitignore │ │ ├── lock-array.arm │ │ └── lock.c │ ├── qbss/ │ │ ├── .gitignore │ │ ├── assumeintroproof_invariant.dfy │ │ ├── auxiliary_helper.dfy │ │ ├── bv.dfy │ │ ├── queue.arm │ │ ├── queue_abstractloginvariant.dfy │ │ ├── queue_tsobypassing_abstractloginvariant.dfy │ │ └── tau_invariant_helper.dfy │ ├── qbss_benchmark/ │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── benchmark.c │ │ ├── benchmark_lfds.c │ │ ├── liblfds711/ │ │ │ ├── build/ │ │ │ │ ├── gcc_gnumake/ │ │ │ │ │ └── Makefile │ │ │ │ ├── gcc_gnumake_kbuild/ │ │ │ │ │ ├── Kbuild │ │ │ │ │ └── Makefile │ │ │ │ ├── msvc_gnumake/ │ │ │ │ │ ├── liblfds711.def │ │ │ │ │ └── makefile │ │ │ │ └── wdk_7.1/ │ │ │ │ ├── dirs │ │ │ │ ├── driver_entry_renamed_to_avoid_compiler_warning.c │ │ │ │ ├── liblfds711.def │ │ │ │ ├── readme_before_win_kernel_build.txt │ │ │ │ ├── runme_before_win_kernel_dynamic_lib_build.bat │ │ │ │ ├── runme_before_win_kernel_static_lib_build.bat │ │ │ │ ├── sources.dynamic │ │ │ │ └── sources.static │ │ │ ├── inc/ │ │ │ │ ├── liblfds711/ │ │ │ │ │ ├── lfds711_btree_addonly_unbalanced.h │ │ │ │ │ ├── lfds711_freelist.h │ │ │ │ │ ├── lfds711_hash_addonly.h │ │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered.h │ │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered.h │ │ │ │ │ ├── lfds711_misc.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_compiler.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_operating_system.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_processor.h │ │ │ │ │ ├── lfds711_prng.h │ │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer.h │ │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer.h │ │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer.h │ │ │ │ │ ├── lfds711_ringbuffer.h │ │ │ │ │ └── lfds711_stack.h │ │ │ │ └── liblfds711.h │ │ │ ├── obj/ │ │ │ │ └── .gitkeep │ │ │ └── src/ │ │ │ ├── lfds711_btree_addonly_unbalanced/ │ │ │ │ ├── lfds711_btree_addonly_unbalanced_cleanup.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_get.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_init.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_insert.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_internal.h │ │ │ │ └── lfds711_btree_addonly_unbalanced_query.c │ │ │ ├── lfds711_freelist/ │ │ │ │ ├── lfds711_freelist_cleanup.c │ │ │ │ ├── lfds711_freelist_init.c │ │ │ │ ├── lfds711_freelist_internal.h │ │ │ │ ├── lfds711_freelist_pop.c │ │ │ │ ├── lfds711_freelist_push.c │ │ │ │ └── lfds711_freelist_query.c │ │ │ ├── lfds711_hash_addonly/ │ │ │ │ ├── lfds711_hash_addonly_cleanup.c │ │ │ │ ├── lfds711_hash_addonly_get.c │ │ │ │ ├── lfds711_hash_addonly_init.c │ │ │ │ ├── lfds711_hash_addonly_insert.c │ │ │ │ ├── lfds711_hash_addonly_internal.h │ │ │ │ ├── lfds711_hash_addonly_iterate.c │ │ │ │ └── lfds711_hash_addonly_query.c │ │ │ ├── lfds711_list_addonly_singlylinked_ordered/ │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_cleanup.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_get.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_init.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_insert.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_internal.h │ │ │ │ └── lfds711_list_addonly_singlylinked_ordered_query.c │ │ │ ├── lfds711_list_addonly_singlylinked_unordered/ │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_cleanup.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_get.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_init.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_insert.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_internal.h │ │ │ │ └── lfds711_list_addonly_singlylinked_unordered_query.c │ │ │ ├── lfds711_misc/ │ │ │ │ ├── lfds711_misc_globals.c │ │ │ │ ├── lfds711_misc_internal.h │ │ │ │ ├── lfds711_misc_internal_backoff_init.c │ │ │ │ └── lfds711_misc_query.c │ │ │ ├── lfds711_prng/ │ │ │ │ ├── lfds711_prng_init.c │ │ │ │ └── lfds711_prng_internal.h │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer/ │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_init.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_internal.h │ │ │ │ └── lfds711_queue_bounded_manyproducer_manyconsumer_query.c │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer/ │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_enqueue.ll │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_init.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_internal.h │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_query.c │ │ │ │ └── test.ll │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer/ │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_init.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_internal.h │ │ │ │ └── lfds711_queue_unbounded_manyproducer_manyconsumer_query.c │ │ │ ├── lfds711_ringbuffer/ │ │ │ │ ├── lfds711_ringbuffer_cleanup.c │ │ │ │ ├── lfds711_ringbuffer_init.c │ │ │ │ ├── lfds711_ringbuffer_internal.h │ │ │ │ ├── lfds711_ringbuffer_query.c │ │ │ │ ├── lfds711_ringbuffer_read.c │ │ │ │ └── lfds711_ringbuffer_write.c │ │ │ ├── lfds711_stack/ │ │ │ │ ├── lfds711_stack_cleanup.c │ │ │ │ ├── lfds711_stack_init.c │ │ │ │ ├── lfds711_stack_internal.h │ │ │ │ ├── lfds711_stack_pop.c │ │ │ │ ├── lfds711_stack_push.c │ │ │ │ └── lfds711_stack_query.c │ │ │ └── liblfds711_internal.h │ │ ├── liblfds711_modulo/ │ │ │ ├── build/ │ │ │ │ ├── gcc_gnumake/ │ │ │ │ │ └── Makefile │ │ │ │ ├── gcc_gnumake_kbuild/ │ │ │ │ │ ├── Kbuild │ │ │ │ │ └── Makefile │ │ │ │ ├── msvc_gnumake/ │ │ │ │ │ ├── liblfds711.def │ │ │ │ │ └── makefile │ │ │ │ └── wdk_7.1/ │ │ │ │ ├── dirs │ │ │ │ ├── driver_entry_renamed_to_avoid_compiler_warning.c │ │ │ │ ├── liblfds711.def │ │ │ │ ├── readme_before_win_kernel_build.txt │ │ │ │ ├── runme_before_win_kernel_dynamic_lib_build.bat │ │ │ │ ├── runme_before_win_kernel_static_lib_build.bat │ │ │ │ ├── sources.dynamic │ │ │ │ └── sources.static │ │ │ ├── inc/ │ │ │ │ ├── liblfds711/ │ │ │ │ │ ├── lfds711_btree_addonly_unbalanced.h │ │ │ │ │ ├── lfds711_freelist.h │ │ │ │ │ ├── lfds711_hash_addonly.h │ │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered.h │ │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered.h │ │ │ │ │ ├── lfds711_misc.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_compiler.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_operating_system.h │ │ │ │ │ ├── lfds711_porting_abstraction_layer_processor.h │ │ │ │ │ ├── lfds711_prng.h │ │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer.h │ │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer.h │ │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer.h │ │ │ │ │ ├── lfds711_ringbuffer.h │ │ │ │ │ └── lfds711_stack.h │ │ │ │ └── liblfds711.h │ │ │ ├── obj/ │ │ │ │ └── .gitkeep │ │ │ └── src/ │ │ │ ├── lfds711_btree_addonly_unbalanced/ │ │ │ │ ├── lfds711_btree_addonly_unbalanced_cleanup.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_get.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_init.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_insert.c │ │ │ │ ├── lfds711_btree_addonly_unbalanced_internal.h │ │ │ │ └── lfds711_btree_addonly_unbalanced_query.c │ │ │ ├── lfds711_freelist/ │ │ │ │ ├── lfds711_freelist_cleanup.c │ │ │ │ ├── lfds711_freelist_init.c │ │ │ │ ├── lfds711_freelist_internal.h │ │ │ │ ├── lfds711_freelist_pop.c │ │ │ │ ├── lfds711_freelist_push.c │ │ │ │ └── lfds711_freelist_query.c │ │ │ ├── lfds711_hash_addonly/ │ │ │ │ ├── lfds711_hash_addonly_cleanup.c │ │ │ │ ├── lfds711_hash_addonly_get.c │ │ │ │ ├── lfds711_hash_addonly_init.c │ │ │ │ ├── lfds711_hash_addonly_insert.c │ │ │ │ ├── lfds711_hash_addonly_internal.h │ │ │ │ ├── lfds711_hash_addonly_iterate.c │ │ │ │ └── lfds711_hash_addonly_query.c │ │ │ ├── lfds711_list_addonly_singlylinked_ordered/ │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_cleanup.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_get.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_init.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_insert.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_ordered_internal.h │ │ │ │ └── lfds711_list_addonly_singlylinked_ordered_query.c │ │ │ ├── lfds711_list_addonly_singlylinked_unordered/ │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_cleanup.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_get.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_init.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_insert.c │ │ │ │ ├── lfds711_list_addonly_singlylinked_unordered_internal.h │ │ │ │ └── lfds711_list_addonly_singlylinked_unordered_query.c │ │ │ ├── lfds711_misc/ │ │ │ │ ├── lfds711_misc_globals.c │ │ │ │ ├── lfds711_misc_internal.h │ │ │ │ ├── lfds711_misc_internal_backoff_init.c │ │ │ │ └── lfds711_misc_query.c │ │ │ ├── lfds711_prng/ │ │ │ │ ├── lfds711_prng_init.c │ │ │ │ └── lfds711_prng_internal.h │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer/ │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_init.c │ │ │ │ ├── lfds711_queue_bounded_manyproducer_manyconsumer_internal.h │ │ │ │ └── lfds711_queue_bounded_manyproducer_manyconsumer_query.c │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer/ │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_enqueue.ll │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_init.c │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_internal.h │ │ │ │ ├── lfds711_queue_bounded_singleproducer_singleconsumer_query.c │ │ │ │ └── test.ll │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer/ │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_cleanup.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_dequeue.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_enqueue.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_init.c │ │ │ │ ├── lfds711_queue_unbounded_manyproducer_manyconsumer_internal.h │ │ │ │ └── lfds711_queue_unbounded_manyproducer_manyconsumer_query.c │ │ │ ├── lfds711_ringbuffer/ │ │ │ │ ├── lfds711_ringbuffer_cleanup.c │ │ │ │ ├── lfds711_ringbuffer_init.c │ │ │ │ ├── lfds711_ringbuffer_internal.h │ │ │ │ ├── lfds711_ringbuffer_query.c │ │ │ │ ├── lfds711_ringbuffer_read.c │ │ │ │ └── lfds711_ringbuffer_write.c │ │ │ ├── lfds711_stack/ │ │ │ │ ├── lfds711_stack_cleanup.c │ │ │ │ ├── lfds711_stack_init.c │ │ │ │ ├── lfds711_stack_internal.h │ │ │ │ ├── lfds711_stack_pop.c │ │ │ │ ├── lfds711_stack_push.c │ │ │ │ └── lfds711_stack_query.c │ │ │ └── liblfds711_internal.h │ │ ├── queue.arm │ │ ├── queue.patch │ │ └── run_benchmarks.py │ ├── reduction/ │ │ ├── .gitignore │ │ ├── test.arm │ │ └── test2.arm │ ├── regions/ │ │ ├── .gitignore │ │ ├── pointers.arm │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ └── test4.arm │ ├── starweakening/ │ │ ├── .gitignore │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ └── test4.arm │ ├── tsoelim/ │ │ ├── .gitignore │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ └── test4.arm │ ├── varhiding/ │ │ ├── .gitignore │ │ ├── VarHidingManualProof.i.dfy │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ ├── test4.arm │ │ └── test5.arm │ ├── varintro/ │ │ ├── .gitignore │ │ ├── test.arm │ │ ├── test2.arm │ │ ├── test3.arm │ │ └── test4.arm │ └── weakening/ │ ├── .gitignore │ ├── ArithmeticFacts.dfy │ ├── TestWeakeningProof.dfy │ ├── test.arm │ ├── test2.arm │ └── test3.arm ├── experimental/ │ ├── .gitignore │ ├── EditorPlugins/ │ │ └── mle-vscode/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .vscodeignore │ │ ├── changelog.md │ │ ├── notes.md │ │ ├── package.json │ │ ├── readme.md │ │ ├── src/ │ │ │ ├── extension.ts │ │ │ ├── refactor-view.ts │ │ │ ├── test/ │ │ │ │ ├── runTest.ts │ │ │ │ └── suite/ │ │ │ │ ├── extension.test.ts │ │ │ │ └── index.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── view/ │ │ │ ├── main.css │ │ │ ├── main.js │ │ │ ├── reset.css │ │ │ └── vscode.css │ │ └── vsc-extension-quickstart.md │ ├── README.md │ ├── SConstruct │ ├── Source/ │ │ ├── .gitignore │ │ ├── Armada/ │ │ │ ├── .gitignore │ │ │ ├── AST/ │ │ │ │ ├── Base.cs │ │ │ │ ├── Expr.cs │ │ │ │ ├── Printer.cs │ │ │ │ ├── ProofStrategy.cs │ │ │ │ ├── Scope.cs │ │ │ │ ├── Statement.cs │ │ │ │ └── Type.cs │ │ │ ├── Armada.csproj │ │ │ ├── Atomic/ │ │ │ │ ├── AtomicPrinter.cs │ │ │ │ └── AtomicSpec.cs │ │ │ ├── IncludeProcessor.cs │ │ │ ├── Program.cs │ │ │ ├── Proof/ │ │ │ │ ├── InvariantPrinter.cs │ │ │ │ ├── Myers.cs │ │ │ │ ├── ProofPrinter.cs │ │ │ │ ├── ProofSpec.cs │ │ │ │ ├── VarHidingPrinter.cs │ │ │ │ ├── VarIntroPrinter.cs │ │ │ │ ├── WeakeningPrinter.cs │ │ │ │ └── WeakeningSpec.cs │ │ │ ├── Reporting.cs │ │ │ ├── Resolver.cs │ │ │ ├── Starmada.atg │ │ │ ├── Util.cs │ │ │ └── dotnet-tools.json │ │ ├── Armada.sln │ │ └── Editor/ │ │ ├── BasicEquality.cs │ │ ├── Driver.cs │ │ ├── Editor.cs │ │ ├── Editor.csproj │ │ ├── IO.cs │ │ ├── Mapper.cs │ │ ├── Paper.md │ │ ├── Position.cs │ │ ├── Readme.md │ │ ├── RefactorBuffer.cs │ │ ├── StatementEquality.cs │ │ ├── StatementSeq.cs │ │ ├── Summary.cs │ │ └── Utils.cs │ ├── Tests/ │ │ ├── .gitignore │ │ ├── editor/ │ │ │ ├── .gitignore │ │ │ ├── basic/ │ │ │ │ ├── ab/ │ │ │ │ │ ├── arg │ │ │ │ │ ├── expect/ │ │ │ │ │ │ └── AB.arm │ │ │ │ │ ├── in │ │ │ │ │ └── proj/ │ │ │ │ │ └── AB.arm │ │ │ │ ├── atomic/ │ │ │ │ │ ├── arg │ │ │ │ │ ├── expect/ │ │ │ │ │ │ └── t.arm │ │ │ │ │ ├── in │ │ │ │ │ └── proj/ │ │ │ │ │ └── t.arm │ │ │ │ ├── if/ │ │ │ │ │ ├── arg │ │ │ │ │ ├── expect/ │ │ │ │ │ │ └── t.arm │ │ │ │ │ ├── in │ │ │ │ │ └── proj/ │ │ │ │ │ └── t.arm │ │ │ │ ├── ifcond/ │ │ │ │ │ ├── arg │ │ │ │ │ ├── expect/ │ │ │ │ │ │ └── t.arm │ │ │ │ │ ├── in │ │ │ │ │ └── proj/ │ │ │ │ │ └── t.arm │ │ │ │ └── while/ │ │ │ │ ├── arg │ │ │ │ ├── expect/ │ │ │ │ │ └── t.arm │ │ │ │ ├── in │ │ │ │ └── proj/ │ │ │ │ └── t.arm │ │ │ └── range/ │ │ │ ├── AST/ │ │ │ │ ├── arg │ │ │ │ ├── expect/ │ │ │ │ │ ├── A.arm │ │ │ │ │ ├── AB.arm │ │ │ │ │ ├── B.arm │ │ │ │ │ ├── BC.arm │ │ │ │ │ ├── C.arm │ │ │ │ │ ├── CD.arm │ │ │ │ │ └── D.arm │ │ │ │ ├── in │ │ │ │ └── proj/ │ │ │ │ ├── A.arm │ │ │ │ ├── AB.arm │ │ │ │ ├── B.arm │ │ │ │ ├── BC.arm │ │ │ │ ├── C.arm │ │ │ │ ├── CD.arm │ │ │ │ └── D.arm │ │ │ ├── ASTC/ │ │ │ │ ├── arg │ │ │ │ ├── expect/ │ │ │ │ │ ├── A.arm │ │ │ │ │ ├── AB.arm │ │ │ │ │ ├── B.arm │ │ │ │ │ ├── BC.arm │ │ │ │ │ ├── C.arm │ │ │ │ │ ├── CD.arm │ │ │ │ │ └── D.arm │ │ │ │ ├── in │ │ │ │ └── proj/ │ │ │ │ ├── A.arm │ │ │ │ ├── AB.arm │ │ │ │ ├── B.arm │ │ │ │ ├── BC.arm │ │ │ │ ├── C.arm │ │ │ │ ├── CD.arm │ │ │ │ └── D.arm │ │ │ ├── ASTS/ │ │ │ │ ├── arg │ │ │ │ ├── expect/ │ │ │ │ │ ├── A.arm │ │ │ │ │ ├── AB.arm │ │ │ │ │ ├── B.arm │ │ │ │ │ ├── BC.arm │ │ │ │ │ ├── C.arm │ │ │ │ │ ├── CD.arm │ │ │ │ │ └── D.arm │ │ │ │ ├── in │ │ │ │ └── proj/ │ │ │ │ ├── A.arm │ │ │ │ ├── AB.arm │ │ │ │ ├── B.arm │ │ │ │ ├── BC.arm │ │ │ │ ├── C.arm │ │ │ │ ├── CD.arm │ │ │ │ └── D.arm │ │ │ └── counter/ │ │ │ ├── arg │ │ │ ├── in │ │ │ └── proj/ │ │ │ ├── A.arm │ │ │ ├── AB.arm │ │ │ ├── B.arm │ │ │ ├── BC.arm │ │ │ ├── C.arm │ │ │ ├── CD.arm │ │ │ ├── D.arm │ │ │ ├── DE.arm │ │ │ ├── E.arm │ │ │ ├── EF.arm │ │ │ ├── F.arm │ │ │ ├── FG.arm │ │ │ ├── G.arm │ │ │ ├── GI.arm │ │ │ ├── I.arm │ │ │ ├── IJ.arm │ │ │ ├── J.arm │ │ │ ├── SharedStructs.arm │ │ │ ├── Z.arm │ │ │ └── extra.dfy │ │ ├── fail/ │ │ │ ├── arr.arm │ │ │ └── fail.arm │ │ ├── legacy-armada/ │ │ │ ├── .gitignore │ │ │ └── MyConcreteAProg.arm │ │ ├── libcuckoo/ │ │ │ ├── Makefile │ │ │ ├── armada.sh │ │ │ ├── carmada.cpp │ │ │ ├── cpp/ │ │ │ │ ├── cuckoohash_config.hh │ │ │ │ ├── cuckoohash_map.hh │ │ │ │ ├── cuckoohash_util.hh │ │ │ │ └── libcuckoo_bucket_container.hh │ │ │ ├── cuckoo.arm │ │ │ └── cuckoo2.arm │ │ ├── parser/ │ │ │ ├── AST/ │ │ │ │ ├── A.arm │ │ │ │ ├── A.arm.expect │ │ │ │ ├── AB.arm │ │ │ │ ├── AB.arm.expect │ │ │ │ ├── B.arm │ │ │ │ ├── B.arm.expect │ │ │ │ ├── BC.arm │ │ │ │ ├── BC.arm.expect │ │ │ │ ├── C.arm │ │ │ │ ├── C.arm.expect │ │ │ │ ├── CD.arm │ │ │ │ ├── CD.arm.expect │ │ │ │ ├── D.arm │ │ │ │ ├── D.arm.expect │ │ │ │ ├── DE.arm │ │ │ │ ├── E.arm │ │ │ │ ├── EndlessExpression.arm │ │ │ │ ├── EndlessExpression.arm.expect │ │ │ │ ├── Statement.arm │ │ │ │ ├── Statement.arm.expect │ │ │ │ ├── array.arm │ │ │ │ ├── array.c │ │ │ │ ├── state.arm │ │ │ │ ├── state.arm.expect │ │ │ │ ├── struct.arm │ │ │ │ ├── struct.arm.expect │ │ │ │ ├── suffix.arm │ │ │ │ └── suffix.arm.expect │ │ │ ├── TypeResolver/ │ │ │ │ ├── boundedInt.arm │ │ │ │ ├── boundedInt.arm.expect │ │ │ │ ├── collectionType.arm │ │ │ │ ├── collectionType.arm.expect │ │ │ │ ├── ifExpr.arm │ │ │ │ ├── literalExpr.arm │ │ │ │ ├── malloc.arm │ │ │ │ ├── method.arm │ │ │ │ ├── pointer.arm │ │ │ │ └── struct.arm │ │ │ ├── compilerTest/ │ │ │ │ ├── arrayDecl.arm │ │ │ │ ├── createThread.arm │ │ │ │ ├── joinThread.arm │ │ │ │ ├── memoryAlloc.arm │ │ │ │ ├── methodDecl.arm │ │ │ │ ├── pointerUsage.arm │ │ │ │ ├── primitiveTypes.arm │ │ │ │ └── structDecl.arm │ │ │ ├── counter/ │ │ │ │ ├── A.arm │ │ │ │ ├── AB.arm │ │ │ │ ├── B.arm │ │ │ │ ├── BC.arm │ │ │ │ ├── C.arm │ │ │ │ ├── CD.arm │ │ │ │ ├── D.arm │ │ │ │ ├── DE.arm │ │ │ │ ├── E.arm │ │ │ │ ├── EF.arm │ │ │ │ ├── F.arm │ │ │ │ ├── FG.arm │ │ │ │ ├── G.arm │ │ │ │ ├── GI.arm │ │ │ │ ├── I.arm │ │ │ │ ├── IJ.arm │ │ │ │ ├── J.arm │ │ │ │ ├── SharedStructs.arm │ │ │ │ ├── Z.arm │ │ │ │ └── extra.dfy │ │ │ ├── fstar/ │ │ │ │ ├── alloc/ │ │ │ │ │ └── alloc.arm │ │ │ │ ├── arraytest/ │ │ │ │ │ └── arraytest.arm │ │ │ │ ├── assert/ │ │ │ │ │ └── assert.arm │ │ │ │ ├── assume/ │ │ │ │ │ └── assume.arm │ │ │ │ ├── atomic/ │ │ │ │ │ └── atomic.arm │ │ │ │ ├── atomicExchange/ │ │ │ │ │ └── atomicExchange.arm │ │ │ │ ├── atomicMethodCall/ │ │ │ │ │ └── atomicMethodCall.arm │ │ │ │ ├── atomicRecursive/ │ │ │ │ │ └── atomicRecursive.arm │ │ │ │ ├── atomicWhile/ │ │ │ │ │ └── atomicWhile.arm │ │ │ │ ├── binaryOperator/ │ │ │ │ │ └── binaryOperator.arm │ │ │ │ ├── boundedInt/ │ │ │ │ │ └── boundedInt.arm │ │ │ │ ├── break/ │ │ │ │ │ └── break.arm │ │ │ │ ├── code/ │ │ │ │ │ └── code.arm │ │ │ │ ├── compareAndSwap/ │ │ │ │ │ └── compareAndSwap.arm │ │ │ │ ├── conversionExpr/ │ │ │ │ │ └── conversionExpr.arm │ │ │ │ ├── createThread/ │ │ │ │ │ └── createThread.arm │ │ │ │ ├── datatype/ │ │ │ │ │ └── datatype.arm │ │ │ │ ├── fence/ │ │ │ │ │ └── fence.arm │ │ │ │ ├── generatedAssign/ │ │ │ │ │ └── generatedAssign.arm │ │ │ │ ├── goto/ │ │ │ │ │ └── goto.arm │ │ │ │ ├── ifExpr/ │ │ │ │ │ └── ifExpr.arm │ │ │ │ ├── ifStmt/ │ │ │ │ │ └── ifStmt.arm │ │ │ │ ├── ifundefined/ │ │ │ │ │ └── ifundefined.arm │ │ │ │ ├── invariantDecl_MaintainedIfStmtSatisfies/ │ │ │ │ │ └── invariantDecl.arm │ │ │ │ ├── invariantDecl_MaintainedIfVarsUnchanged/ │ │ │ │ │ └── invariantDecl.arm │ │ │ │ ├── literalExpr/ │ │ │ │ │ └── literalExpr.arm │ │ │ │ ├── mapComprehension/ │ │ │ │ │ └── mapComprehension.arm │ │ │ │ ├── maptest/ │ │ │ │ │ └── maptest.arm │ │ │ │ ├── matchCase/ │ │ │ │ │ └── matchCase.arm │ │ │ │ ├── methodCall/ │ │ │ │ │ └── methodCall.arm │ │ │ │ ├── quantifierexpr/ │ │ │ │ │ └── quantifierexpr.arm │ │ │ │ ├── recursiveMatch/ │ │ │ │ │ └── recursiveMatch.arm │ │ │ │ ├── relation/ │ │ │ │ │ └── relation.arm │ │ │ │ ├── seqtest/ │ │ │ │ │ └── seqtest.arm │ │ │ │ ├── setComprehension/ │ │ │ │ │ └── setComprehension.arm │ │ │ │ ├── settest/ │ │ │ │ │ └── settest.arm │ │ │ │ ├── somehow/ │ │ │ │ │ └── somehow.arm │ │ │ │ ├── somehowLock/ │ │ │ │ │ └── somehow.arm │ │ │ │ ├── struct/ │ │ │ │ │ └── struct.arm │ │ │ │ ├── subroutine/ │ │ │ │ │ └── subroutine.arm │ │ │ │ ├── unaryOperator/ │ │ │ │ │ └── unaryOperator.arm │ │ │ │ ├── while/ │ │ │ │ │ └── while.arm │ │ │ │ └── wildcard/ │ │ │ │ └── wildcard.arm │ │ │ ├── includeTest/ │ │ │ │ ├── A.arm │ │ │ │ ├── A.arm.expect │ │ │ │ ├── B.arm │ │ │ │ ├── B.arm.expect │ │ │ │ ├── C.arm │ │ │ │ └── C.arm.expect │ │ │ ├── ogCounterExample.arm │ │ │ └── test.arm │ │ └── proof/ │ │ ├── globalVarsUnmodifiable/ │ │ │ └── globalVarsUnmodifiable.arm │ │ ├── varHiding/ │ │ │ └── varHiding.arm │ │ ├── varIntro/ │ │ │ └── varIntro.arm │ │ └── varIntroWithAtomic/ │ │ └── varIntro.arm │ ├── docker/ │ │ └── Dockerfile │ ├── fstar.opam │ ├── grammar.txt │ ├── lib/ │ │ ├── .gitignore │ │ ├── Armada.Action.fst │ │ ├── Armada.Base.fst │ │ ├── Armada.BinaryOp.fst │ │ ├── Armada.BoundedInt.fst │ │ ├── Armada.Computation.fst │ │ ├── Armada.Expression.fst │ │ ├── Armada.Globals.fst │ │ ├── Armada.Init.fst │ │ ├── Armada.Memory.fst │ │ ├── Armada.Pointer.fst │ │ ├── Armada.Program.fst │ │ ├── Armada.State.fst │ │ ├── Armada.Statement.fst │ │ ├── Armada.Step.fst │ │ ├── Armada.Thread.fst │ │ ├── Armada.Threads.fst │ │ ├── Armada.Transition.fst │ │ ├── Armada.Type.fst │ │ ├── Armada.UnaryOp.fst │ │ ├── GlobalVarExampleInvariant.fst │ │ ├── Makefile │ │ ├── MyAProg.fst │ │ ├── MyAtomicAProg.fst │ │ ├── MyAtomicBInvariant.fst │ │ ├── MyAtomicBProg.fst │ │ ├── MyAtomicHProg.fst │ │ ├── MyAtomicLProg.fst │ │ ├── MyAtomicToRegularRefinement.fst │ │ ├── MyBProg.fst │ │ ├── MyHProg.arm │ │ ├── MyHProg.fst │ │ ├── MyLProg.arm │ │ ├── MyLProg.fst │ │ ├── MyList.fst │ │ ├── MyProgramInvariant.fst │ │ ├── MyProgramProof.fst │ │ ├── MyRegularToAtomicRefinement.fst │ │ ├── MyVarHidingProof.fst │ │ ├── MyVarIntroProof.fst │ │ ├── Spec.Behavior.fst │ │ ├── Spec.List.fst │ │ ├── Spec.Logic.fst │ │ ├── Spec.Map.fst │ │ ├── Spec.Ubool.fst │ │ ├── Strategies.ArmadaInvariant.PositionsValid.fst │ │ ├── Strategies.ArmadaInvariant.PositionsValid.fsti │ │ ├── Strategies.ArmadaInvariant.RootsMatch.fst │ │ ├── Strategies.ArmadaInvariant.UnstartedThreads.fst │ │ ├── Strategies.ArmadaInvariant.UnstartedThreads.fsti │ │ ├── Strategies.ArmadaStatement.Breaking.fst │ │ ├── Strategies.ArmadaStatement.Nonyielding.fst │ │ ├── Strategies.ArmadaStatement.Opaque.fst │ │ ├── Strategies.ArmadaStatement.Propagate.fst │ │ ├── Strategies.ArmadaStatement.Status.fst │ │ ├── Strategies.ArmadaStatement.Status.fsti │ │ ├── Strategies.ArmadaStatement.ThreadState.fst │ │ ├── Strategies.ArmadaStatement.fst │ │ ├── Strategies.Atomic.fst │ │ ├── Strategies.AtomicToRegular.Armada.fst │ │ ├── Strategies.AtomicToRegular.Armada.fsti │ │ ├── Strategies.AtomicToRegular.fst │ │ ├── Strategies.AtomicToRegular.fsti │ │ ├── Strategies.Breaking.fst │ │ ├── Strategies.Common.fst │ │ ├── Strategies.GlobalVars.Init.fst │ │ ├── Strategies.GlobalVars.Permanent.fst │ │ ├── Strategies.GlobalVars.Pointer.fst │ │ ├── Strategies.GlobalVars.Statement.fst │ │ ├── Strategies.GlobalVars.Statement.fsti │ │ ├── Strategies.GlobalVars.Types.fst │ │ ├── Strategies.GlobalVars.Unaddressed.fst │ │ ├── Strategies.GlobalVars.UnaddressedStatement.fst │ │ ├── Strategies.GlobalVars.Util.fst │ │ ├── Strategies.GlobalVars.Value.fst │ │ ├── Strategies.GlobalVars.VarHiding.fst │ │ ├── Strategies.GlobalVars.VarHiding.fsti │ │ ├── Strategies.GlobalVars.VarIntro.fst │ │ ├── Strategies.GlobalVars.VarIntro.fsti │ │ ├── Strategies.GlobalVars.fst │ │ ├── Strategies.GlobalVarsProof.fst │ │ ├── Strategies.Invariant.Armada.Atomic.fst │ │ ├── Strategies.Invariant.Armada.Atomic.fsti │ │ ├── Strategies.Invariant.Armada.AtomicSubstep.fst │ │ ├── Strategies.Invariant.Armada.AtomicSubstep.fsti │ │ ├── Strategies.Invariant.Armada.fst │ │ ├── Strategies.Invariant.Armada.fsti │ │ ├── Strategies.Invariant.Atomic.fst │ │ ├── Strategies.Invariant.Atomic.fsti │ │ ├── Strategies.Invariant.fst │ │ ├── Strategies.Invariant.fsti │ │ ├── Strategies.Lift.Generic.fst │ │ ├── Strategies.Lift.Generic.fsti │ │ ├── Strategies.Nonyielding.fst │ │ ├── Strategies.PCIndices.fst │ │ ├── Strategies.PCRelation.fst │ │ ├── Strategies.RegularToAtomic.Armada.Helper.fst │ │ ├── Strategies.RegularToAtomic.Armada.fst │ │ ├── Strategies.RegularToAtomic.Armada.fsti │ │ ├── Strategies.RegularToAtomic.fst │ │ ├── Strategies.RegularToAtomic.fsti │ │ ├── Strategies.Semantics.Armada.fst │ │ ├── Strategies.Semantics.Armada.fsti │ │ ├── Strategies.Semantics.fst │ │ ├── Strategies.VarHiding.Defs.fst │ │ ├── Strategies.VarHiding.Efficient.fst │ │ ├── Strategies.VarHiding.Efficient.fsti │ │ ├── Strategies.VarHiding.Helpers.fst │ │ ├── Strategies.VarHiding.Inefficient.fst │ │ ├── Strategies.VarHiding.Inefficient.fsti │ │ ├── Strategies.VarHiding.Initialization.fst │ │ ├── Strategies.VarHiding.Initialization.fsti │ │ ├── Strategies.VarHiding.Invariant.fst │ │ ├── Strategies.VarHiding.Propagate.fst │ │ ├── Strategies.VarHiding.Relation.fst │ │ ├── Strategies.VarHiding.Relation.fsti │ │ ├── Strategies.VarIntro.Defs.fst │ │ ├── Strategies.VarIntro.Efficient.fst │ │ ├── Strategies.VarIntro.Efficient.fsti │ │ ├── Strategies.VarIntro.Helpers.fst │ │ ├── Strategies.VarIntro.Inefficient.fst │ │ ├── Strategies.VarIntro.Inefficient.fsti │ │ ├── Strategies.VarIntro.Initialization.fst │ │ ├── Strategies.VarIntro.Initialization.fsti │ │ ├── Strategies.VarIntro.Invariant.fst │ │ ├── Strategies.VarIntro.Propagate.fst │ │ ├── Strategies.VarIntro.Relation.fst │ │ ├── Strategies.VarIntro.Relation.fsti │ │ ├── Strategies.Weakening.Armada.fst │ │ ├── Strategies.Weakening.Armada.fsti │ │ ├── Strategies.Weakening.fst │ │ ├── Strategies.Weakening.fsti │ │ ├── Util.Behavior.fst │ │ ├── Util.ImmutableArray.fst │ │ ├── Util.ImmutableArray.fsti │ │ ├── Util.List.fst │ │ ├── Util.Logic.fst │ │ ├── Util.Nth.fst │ │ ├── Util.Range.fst │ │ ├── Util.Range.fsti │ │ ├── Util.Relation.fst │ │ ├── Util.Seq.fst │ │ ├── Util.Seq.fsti │ │ ├── Util.Tactics.fst │ │ └── Util.Trigger.fst │ ├── output.c │ └── third_party/ │ └── Coco/ │ ├── LICENSE.txt │ ├── README.txt │ └── src/ │ ├── Parser.frame │ └── Scanner.frame ├── third_party/ │ └── Coco/ │ ├── LICENSE.txt │ ├── README.txt │ └── src/ │ ├── Coco.atg │ ├── Coco.build │ ├── Coco.cs │ ├── Coco.csproj │ ├── DFA.cs │ ├── Parser.cs │ ├── Parser.frame │ ├── ParserGen.cs │ ├── Scanner.cs │ ├── Scanner.frame │ ├── Tab.cs │ ├── build.bat │ └── coc.bat └── tools/ └── scripts/ ├── .gitignore ├── __init__.py ├── dafny-oneproc.py └── dafny_profiler.py