Module Block


module Block: sig .. end
Tableaux blocks. Blocks contain a set of schemata and a constraint. They are the main pieces of data that rules work with.


Author(s): Vincent Aravantinos
See also A Schemata Calculus For Propositional Logic.


type t 
Type of blocks.

Constructor

val of_schs_and_cstr : cstr:Constraint.t -> schs:Schema.t list -> t

Selectors

val schs_of : t -> Schema.t list
val cstr_of : t -> Constraint.t
val is_empty : t -> bool

Printing

val to_string : t -> string

Comparisons

val equal : t -> t -> bool

Others

val contains_iterations : t -> bool
Returns true if some schema in the block contains an iteration.
val max_bound : t -> Indexes.t option
Returns the maximum upper bound among all iterations occurring in the schemata of the block, if any, returns None if no iteration.
val dedup : t -> t
Returns the same block with duplicated schemas removed
val normalize : t -> t
Returns the same block up to a shift (see looping.mli) but normalized for more efficient retrieval in the set of lemmas.

Traversal of a block for rule application


type branch_update =
| Replace_with_schema of Schema.t
| Replace_with_schemas of Schema.t * Schema.t
| Replace_with_schema_add_constraint of Schema.t * Constraint.t
| Add_constraint of Constraint.t
See regstab.ml for a better understanding

type branching =
| Go_on
| Close
| Update of branch_update
| Branch of branch_update * branch_update
val apply_rules_with_closure : t ->
rules:(sch:Schema.t -> cstr:Constraint.t -> branching) ->
k:(t -> Satisfiability.t) -> Satisfiability.t
Apply the given rules while checking if closure applied

Apply the given rules without checking if closure applied

val apply_rules : t ->
rules:(sch:Schema.t -> cstr:Constraint.t -> branching) ->
k:(t -> Satisfiability.t) -> Satisfiability.t
include Purity.Purable
val purity : t -> Purity.t
module LoopingMap: Looping.LoopingMap  with type loopable = t