P 3 - Post 3-valued Logic
Emil Post
Emil Post's three-valued logic, with values T , F , and N . It features
a deviant negation that performs a cyclic shift in value.
Contents
Common labels for the values include:
T
1
just true
N
0.5
neither true nor false
F
0
just false
Designated Values
The set of designated values for P 3 is the singleton: { T }
The value of a sentence with a truth-functional operator is determined by
the values of its operands according to the following tables.
Disjunction
∨
T
T
T
T
N
T
N
N
F
T
N
F
Defined Operators
Conjunction ∧ is defined in terms of ¬ and ∨ in a standard way:
Given the behavior of ¬ , however, this yields a non-standard table:
Conjunction
∧
T
F
F
N
N
F
T
N
F
N
N
N
The Material Conditional ⊃ is definable in terms of disjunction:
Likewise the Material Biconditional ≡ is defined in terms of ⊃
and ∧ :
A ≡ B \(:=\) (A ⊃ B) ∧ (B ⊃ A)
Material Conditional
⊃
T
T
N
N
N
T
N
F
F
T
T
T
Material Biconditional
≡
T
F
F
F
N
F
T
N
F
F
N
F
Compatibility Tables
P 3 does not have separate Assertion or Conditional operators,
but we include tables and rules for them, for cross-compatibility.
Conditional
→
T
T
N
N
N
T
N
F
F
T
T
T
Biconditional
↔
T
F
F
F
N
F
T
N
F
F
N
F
A sentence with n -ary predicate \(P\) over parameters \(\langle a_0, ... ,a_n\rangle\)
has the value:
T iff \(\langle a_0, ... ,a_n\rangle\) is in the extension of \(P\)
and not in the anti-extension of \(P\) .
F iff \(\langle a_0, ... ,a_n\rangle\) is in the anti-extension of \(P\) and
not in the extension of \(P\) .
N iff \(\langle a_0, ... ,a_n\rangle\) is in neither the extension
nor the anti-extension of \(P\) .
Logical Consequence is defined in terms of the set of designated values
{ T }:
Logical Consequence
C is a Logical Consequence of A iff
all models where A has a desginated value
are models where C also has a designated value.
P 3 tableaux are built similary to FDE .
Nodes for many-value tableaux consiste of a sentence plus a designation
marker: ⊕ for designated , and ⊖ for undesignated .
To build the trunk for an argument, add a designated node for each premise, and
an undesignated node for the conclusion.
To build the trunk for the argument A1 ... An ∴ B write:
A1 ⊕
⋮
An ⊕
B ⊖
In general, rules for connectives consist of four rules per connective:
a designated rule, an undesignated rule, a negated designated rule, and a negated
undesignated rule. The special case of negation has a total of two rules which apply
to double negation only, one designated rule, and one undesignated rule.
Operator Rules
¬ Rules
¬ ¬ ⊕ Double Negation Designated [source]
¬¬A ⊕
⋮
¬A ⊖
A ⊖
¬ ¬ ⊖ Double Negation Undesignated [source]
∧ Rules
∧ ⊕ Conjunction Designated [source]
A ∧ B ⊕
⋮
¬A ⊖
A ⊖
¬B ⊖
B ⊖
∧ ⊖ Conjunction Undesignated [source]
¬ ∧ ⊕ Conjunction Negated Designated [source]
¬ ∧ ⊖ Conjunction Negated Undesignated [source]
¬(A ∧ B) ⊖
⋮
¬A ⊖
A ⊖
¬B ⊖
B ⊖
∨ Rules
∨ ⊕ FDE Disjunction Designated [source]
∨ ⊖ FDE Disjunction Undesignated [source]
A ∨ B ⊖
⋮
A ⊖
B ⊖
¬ ∨ ⊕ FDE Disjunction Negated Designated [source]
¬(A ∨ B) ⊕
⋮
¬A ⊕
¬B ⊕
¬ ∨ ⊖ FDE Disjunction Negated Undesignated [source]
¬(A ∨ B) ⊖
⋮
⊃ Rules
⊃ ⊕ Material Conditional Designated [source]
A ⊃ B ⊕
⋮
¬A ∨ B ⊕
⊃ ⊖ Material Conditional Undesignated [source]
A ⊃ B ⊖
⋮
¬A ∨ B ⊖
¬ ⊃ ⊕ Material Conditional Negated Designated [source]
¬(A ⊃ B) ⊕
⋮
¬(¬A ∨ B) ⊕
¬ ⊃ ⊖ Material Conditional Negated Undesignated [source]
¬(A ⊃ B) ⊖
⋮
¬(¬A ∨ B) ⊖
≡ Rules
≡ ⊕ Material Biconditional Designated [source]
A ≡ B ⊕
⋮
(A ⊃ B) ∧ (B ⊃ A) ⊕
≡ ⊖ Material Biconditional Undesignated [source]
A ≡ B ⊖
⋮
(A ⊃ B) ∧ (B ⊃ A) ⊖
¬ ≡ ⊕ Material Biconditional Negated Designated [source]
¬(A ≡ B) ⊕
⋮
¬((A ⊃ B) ∧ (B ⊃ A)) ⊕
¬ ≡ ⊖ Material Biconditional Negated Undesignated [source]
¬(A ≡ B) ⊖
⋮
¬((A ⊃ B) ∧ (B ⊃ A)) ⊖
Compatibility Rules
⚬ Rules
⚬ ⊕ FDE Assertion Designated [source]
⚬ ⊖ FDE Assertion Undesignated [source]
⚬A ⊖
⋮
A ⊖
¬ ⚬ ⊕ FDE Assertion Negated Designated [source]
¬ ⚬ ⊖ FDE Assertion Negated Undesignated [source]
¬⚬A ⊖
⋮
¬A ⊖
→ Rules
→ ⊕ Conditional Designated [source]
A → B ⊕
⋮
¬A ∨ B ⊕
→ ⊖ Conditional Undesignated [source]
A → B ⊖
⋮
¬A ∨ B ⊖
¬ → ⊕ Conditional Negated Designated [source]
¬(A → B) ⊕
⋮
¬(¬A ∨ B) ⊕
¬ → ⊖ Conditional Negated Undesignated [source]
¬(A → B) ⊖
⋮
¬(¬A ∨ B) ⊖
↔ Rules
↔ ⊕ Biconditional Designated [source]
A ↔ B ⊕
⋮
(A → B) ∧ (B → A) ⊕
↔ ⊖ Biconditional Undesignated [source]
A ↔ B ⊖
⋮
(A → B) ∧ (B → A) ⊖
¬ ↔ ⊕ Biconditional Negated Designated [source]
¬(A ↔ B) ⊕
⋮
¬((A → B) ∧ (B → A)) ⊕
¬ ↔ ⊖ Biconditional Negated Undesignated [source]
¬(A ↔ B) ⊖
⋮
¬((A → B) ∧ (B → A)) ⊖
class Rules [source]
closure : tuple [ type [ ClosingRule ] , ... ] = (<class 'pytableaux.logics.k3.Rules.GlutClosure'>, <class 'pytableaux.logics.fde.Rules.DesignationClosure'>)
class DoubleNegationDesignated ( tableau , / , ** opts ) [source]
¬ ¬ ⊕
¬¬A ⊕
⋮
¬A ⊖
A ⊖
From an unticked, designated, double-negation node n on a branch b ,
add two undesignated nodes to b , one with the double-negatum, and one
with the negatum. Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Negation(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Negation(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Negation), (Legend.designation, True))
The rule class legend.
name : str = 'DoubleNegationDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (20, 1)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class DoubleNegationUndesignated ( tableau , / , ** opts ) [source]
From an unticked, undesignated, double-negation node n on a branch b ,
make two branches b' and b'' from b . On b' add a designated
node with the negatum, and on b' add a designated node with the
double-negatum. Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Negation(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Negation(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 1
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Negation), (Legend.designation, False))
The rule class legend.
name : str = 'DoubleNegationUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (20, 1)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConjunctionDesignated ( tableau , / , ** opts ) [source]
∧ ⊕
A ∧ B ⊕
⋮
¬A ⊖
A ⊖
¬B ⊖
B ⊖
From an unticked, designated conjunction node n on a branch b , add
four undesignated nodes to b , one for each conjunct, and one for the
negation of each conjunct. Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conjunction>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conjunction>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Conjunction), (Legend.designation, True))
The rule class legend.
name : str = 'ConjunctionDesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (30, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConjunctionNegatedDesignated ( tableau , / , ** opts ) [source]
From an unticked, designated, negated conjunction node n on a branch
b , make two branches b' and b'' from b . On b' add a designated
node with the first conjunct, and an undesignated node with the negation
of the second conjunct. On b'' add a designated node with the second
conjunct, and an undesignated node with the negation of the frist conjunct.
Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conjunction(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conjunction(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 1
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Conjunction), (Legend.designation, True))
The rule class legend.
name : str = 'ConjunctionNegatedDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (30, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConjunctionUndesignated ( tableau , / , ** opts ) [source]
From an unticked, undesignated conjunction node n on a branch b , make
four branches b' , b'' , b''' , and b'''' from b . On b' , add a
designated node with the negation of the first conjunct. On b'' , add
a designated node ith the first conjunct. On b''' , add a designated
node with the negation of the second conjunct. On b'''' , add a designated
node with the second conjunct. Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conjunction>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conjunction>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 3
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Conjunction), (Legend.designation, False))
The rule class legend.
name : str = 'ConjunctionUndesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (30, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConjunctionNegatedUndesignated ( tableau , / , ** opts ) [source]
¬ ∧ ⊖
¬(A ∧ B) ⊖
⋮
¬A ⊖
A ⊖
¬B ⊖
B ⊖
From an unticked, undesignated, negated conjunction node n on a branch
b , make three branches b' , b'' , and b''' from b . On b' , add
four undesignated nodes, one for each conjunct, and one for the negation
of each conjunct. On b'' , add a designated node with the negation of
the first conjunct. On b''' , add a designated node with the negation
of the second conjunct. Then tick n .
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conjunction(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conjunction(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 2
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Conjunction), (Legend.designation, False))
The rule class legend.
name : str = 'ConjunctionNegatedUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (30, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialConditionalDesignated ( tableau , / , ** opts ) [source]
⊃ ⊕
A ⊃ B ⊕
⋮
¬A ∨ B ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialConditional>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialConditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.MaterialConditional), (Legend.designation, True))
The rule class legend.
name : str = 'MaterialConditionalDesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (50, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialConditionalNegatedDesignated ( tableau , / , ** opts ) [source]
¬ ⊃ ⊕
¬(A ⊃ B) ⊕
⋮
¬(¬A ∨ B) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialConditional(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialConditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.MaterialConditional), (Legend.designation, True))
The rule class legend.
name : str = 'MaterialConditionalNegatedDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (50, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialConditionalUndesignated ( tableau , / , ** opts ) [source]
⊃ ⊖
A ⊃ B ⊖
⋮
¬A ∨ B ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialConditional>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialConditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.MaterialConditional), (Legend.designation, False))
The rule class legend.
name : str = 'MaterialConditionalUndesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (50, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialConditionalNegatedUndesignated ( tableau , / , ** opts ) [source]
¬ ⊃ ⊖
¬(A ⊃ B) ⊖
⋮
¬(¬A ∨ B) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialConditional(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialConditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.MaterialConditional), (Legend.designation, False))
The rule class legend.
name : str = 'MaterialConditionalNegatedUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (50, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialBiconditionalDesignated ( tableau , / , ** opts ) [source]
≡ ⊕
A ≡ B ⊕
⋮
(A ⊃ B) ∧ (B ⊃ A) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialBiconditional>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialBiconditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.MaterialBiconditional), (Legend.designation, True))
The rule class legend.
name : str = 'MaterialBiconditionalDesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (60, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialBiconditionalNegatedDesignated ( tableau , / , ** opts ) [source]
¬ ≡ ⊕
¬(A ≡ B) ⊕
⋮
¬((A ⊃ B) ∧ (B ⊃ A)) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialBiconditional(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialBiconditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.MaterialBiconditional), (Legend.designation, True))
The rule class legend.
name : str = 'MaterialBiconditionalNegatedDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (60, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialBiconditionalUndesignated ( tableau , / , ** opts ) [source]
≡ ⊖
A ≡ B ⊖
⋮
(A ⊃ B) ∧ (B ⊃ A) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialBiconditional>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialBiconditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.MaterialBiconditional), (Legend.designation, False))
The rule class legend.
name : str = 'MaterialBiconditionalUndesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (60, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class MaterialBiconditionalNegatedUndesignated ( tableau , / , ** opts ) [source]
¬ ≡ ⊖
¬(A ≡ B) ⊖
⋮
¬((A ⊃ B) ∧ (B ⊃ A)) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=MaterialBiconditional(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=MaterialBiconditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.MaterialBiconditional), (Legend.designation, False))
The rule class legend.
name : str = 'MaterialBiconditionalNegatedUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (60, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConditionalDesignated ( tableau , / , ** opts ) [source]
→ ⊕
A → B ⊕
⋮
¬A ∨ B ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conditional>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Conditional), (Legend.designation, True))
The rule class legend.
name : str = 'ConditionalDesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (70, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConditionalNegatedDesignated ( tableau , / , ** opts ) [source]
¬ → ⊕
¬(A → B) ⊕
⋮
¬(¬A ∨ B) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conditional(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Conditional), (Legend.designation, True))
The rule class legend.
name : str = 'ConditionalNegatedDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (70, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConditionalUndesignated ( tableau , / , ** opts ) [source]
→ ⊖
A → B ⊖
⋮
¬A ∨ B ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conditional>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Conditional), (Legend.designation, False))
The rule class legend.
name : str = 'ConditionalUndesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (70, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class ConditionalNegatedUndesignated ( tableau , / , ** opts ) [source]
¬ → ⊖
¬(A → B) ⊖
⋮
¬(¬A ∨ B) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Conditional(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Conditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Conditional), (Legend.designation, False))
The rule class legend.
name : str = 'ConditionalNegatedUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (70, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class BiconditionalDesignated ( tableau , / , ** opts ) [source]
↔ ⊕
A ↔ B ⊕
⋮
(A → B) ∧ (B → A) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Biconditional>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Biconditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Biconditional), (Legend.designation, True))
The rule class legend.
name : str = 'BiconditionalDesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (80, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class BiconditionalNegatedDesignated ( tableau , / , ** opts ) [source]
¬ ↔ ⊕
¬(A ↔ B) ⊕
⋮
¬((A → B) ∧ (B → A)) ⊕
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=True)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Biconditional(negated)>}), pred=(<NodeDesignation:(designated=True)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Biconditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = True
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Biconditional), (Legend.designation, True))
The rule class legend.
name : str = 'BiconditionalNegatedDesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (80, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class BiconditionalUndesignated ( tableau , / , ** opts ) [source]
↔ ⊖
A ↔ B ⊖
⋮
(A → B) ∧ (B → A) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Biconditional>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Biconditional>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.operator, Operator.Biconditional), (Legend.designation, False))
The rule class legend.
name : str = 'BiconditionalUndesignated'
The rule class name.
negated : bool | None = None
operator : Operator | None = (80, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
class BiconditionalNegatedUndesignated ( tableau , / , ** opts ) [source]
¬ ↔ ⊖
¬(A ↔ B) ⊖
⋮
¬((A → B) ∧ (B → A)) ⊖
Parameters:
tableau (Tableau ) --
Helpers : Mapping [ type [ Rule.Helper ] , Any ] = mappingproxy({<class 'pytableaux.proof.helpers.AdzHelper'>: None, <class 'pytableaux.proof.helpers.FilterHelper'>: Config(filters=mappingproxy({<class 'pytableaux.proof.filters.NodeDesignation'>: <NodeDesignation:(designated=False)>, <class 'pytableaux.proof.filters.NodeType'>: <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <class 'pytableaux.proof.filters.NodeSentence'>: <NodeSentence:operator=Biconditional(negated)>}), pred=(<NodeDesignation:(designated=False)>, <NodeType:((<class 'pytableaux.proof.common.Node'>,))>, <NodeSentence:operator=Biconditional(negated)>), ignore_ticked=True)})
Helper classes mapped to their settings.
NodeFilters = {<class 'pytableaux.proof.filters.NodeDesignation'>: None, <class 'pytableaux.proof.filters.NodeSentence'>: None, <class 'pytableaux.proof.filters.NodeType'>: None}
branching : int = 0
The number of additional branches created.
defaults = mappingproxy({'is_rank_optim': True, 'nolock': False})
designation : bool | None = False
legend : tuple [ tuple [ str , Any ] , ... ] = ((Legend.negated, Operator.Negation), (Legend.operator, Operator.Biconditional), (Legend.designation, False))
The rule class legend.
name : str = 'BiconditionalNegatedUndesignated'
The rule class name.
negated : bool | None = True
operator : Operator | None = (80, 2)
predicate : Predicate | None = None
quantifier : Quantifier | None = None
timer_names : Sequence [ str ] = qsetf({'search', 'apply'})
StopWatch names to create in timers
mapping.
groups : tuple [ tuple [ type [ Rule ] , ... ] , ... ] = ((<class 'pytableaux.logics.fde.Rules.AssertionDesignated'>, <class 'pytableaux.logics.fde.Rules.AssertionUndesignated'>, <class 'pytableaux.logics.fde.Rules.AssertionNegatedDesignated'>, <class 'pytableaux.logics.fde.Rules.AssertionNegatedUndesignated'>, <class 'pytableaux.logics.p3.Rules.ConjunctionDesignated'>, <class 'pytableaux.logics.fde.Rules.DisjunctionUndesignated'>, <class 'pytableaux.logics.fde.Rules.DisjunctionNegatedDesignated'>, <class 'pytableaux.logics.p3.Rules.DoubleNegationDesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialConditionalDesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialConditionalUndesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialConditionalNegatedDesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialConditionalNegatedUndesignated'>, <class 'pytableaux.logics.p3.Rules.ConditionalDesignated'>, <class 'pytableaux.logics.p3.Rules.ConditionalUndesignated'>, <class 'pytableaux.logics.p3.Rules.ConditionalNegatedDesignated'>, <class 'pytableaux.logics.p3.Rules.ConditionalNegatedUndesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialBiconditionalDesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialBiconditionalUndesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialBiconditionalNegatedDesignated'>, <class 'pytableaux.logics.p3.Rules.MaterialBiconditionalNegatedUndesignated'>, <class 'pytableaux.logics.p3.Rules.BiconditionalDesignated'>, <class 'pytableaux.logics.p3.Rules.BiconditionalUndesignated'>, <class 'pytableaux.logics.p3.Rules.BiconditionalNegatedDesignated'>, <class 'pytableaux.logics.p3.Rules.BiconditionalNegatedUndesignated'>), (<class 'pytableaux.logics.p3.Rules.DoubleNegationUndesignated'>, <class 'pytableaux.logics.p3.Rules.ConjunctionNegatedDesignated'>, <class 'pytableaux.logics.fde.Rules.DisjunctionDesignated'>, <class 'pytableaux.logics.fde.Rules.DisjunctionNegatedUndesignated'>), (<class 'pytableaux.logics.p3.Rules.ConjunctionNegatedUndesignated'>,), (<class 'pytableaux.logics.p3.Rules.ConjunctionUndesignated'>,))