Cardinality specification predicates #
This file defines useful predicates for specifying the behavior of cardinality encodings.
def
Trestle.Encode.Cardinality.card
{ν : Type u_1}
(lits : Multiset (Literal ν))
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.card lits τ = Multiset.countP (fun (x : Trestle.Literal ν) => τ ⊨ Trestle.LitVar.toPropFun x) lits
Instances For
def
Trestle.Encode.Cardinality.cardPred
{ν : Type u_1}
(lits : Multiset (Literal ν))
(P : ℕ → Prop)
[DecidablePred P]
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.cardPred lits P τ = P (Trestle.Encode.Cardinality.card lits τ)
Instances For
@[simp]
theorem
Trestle.Encode.Cardinality.satisfies_cardPred
{ν : Type u_1}
(lits : Multiset (Literal ν))
(P : ℕ → Prop)
[DecidablePred P]
(τ : Model.PropAssignment ν)
:
@[reducible, inline]
abbrev
Trestle.Encode.Cardinality.atMost
{ν : Type u_1}
(k : ℕ)
(lits : Multiset (Literal ν))
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.atMost k lits = Trestle.Encode.Cardinality.cardPred lits fun (x : ℕ) => x ≤ k
Instances For
@[reducible, inline]
abbrev
Trestle.Encode.Cardinality.atLeast
{ν : Type u_1}
(k : ℕ)
(lits : Multiset (Literal ν))
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.atLeast k lits = Trestle.Encode.Cardinality.cardPred lits fun (x : ℕ) => x ≥ k
Instances For
@[reducible, inline]
abbrev
Trestle.Encode.Cardinality.exactly
{ν : Type u_1}
(k : ℕ)
(lits : Multiset (Literal ν))
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.exactly k lits = Trestle.Encode.Cardinality.cardPred lits fun (x : ℕ) => x = k
Instances For
@[reducible, inline]
abbrev
Trestle.Encode.Cardinality.lessThan
{ν : Type u_1}
(k : ℕ)
(lits : Multiset (Literal ν))
(τ : Model.PropAssignment ν)
:
Equations
- Trestle.Encode.Cardinality.lessThan k lits = Trestle.Encode.Cardinality.cardPred lits fun (x : ℕ) => x < k
Instances For
@[simp]
@[simp]
@[simp]
theorem
Trestle.Encode.Cardinality.card_map
{ν : Type u_1}
{ν' : Type u_2}
(L : List (Literal ν))
(f : ν → ν')
(τ : Model.PropAssignment ν')
: