theorem
Finset.sum_filterMap
{ι κ M : Type}
[AddCommMonoid M]
[DecidableEq ι]
[DecidableEq κ]
(s : Finset ι)
(e : ι → Option κ)
(he : ∀ (a a' : ι), ∀ b ∈ e a, b ∈ e a' → a = a')
(f : κ → M)
:
@[simp]
theorem
WeightedNetKAT.Countsupp.zero_bind
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{X : Type}
[Countable X]
[Encodable X]
{g : X → X →c 𝒮}
:
@[simp]
theorem
WeightedNetKAT.Countsupp.one_bind
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{X : Type}
[Countable X]
[Encodable X]
{g : X → X →c 𝒮}
:
@[irreducible]
noncomputable def
WeightedNetKAT.RPol.sem
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
(p : RPol 𝒮)
:
Equations
- WeightedNetKAT.RPol.Drop.sem = 0
- wnk_rpol {skip}.sem = WeightedNetKAT.η
- wnk_rpol {@test ~t}.sem = fun (x : Pk[F,N] × List Pk[F,N]) => match x with | (π, h) => if π = t then WeightedNetKAT.η (π, h) else 0
- wnk_rpol {@mod ~t}.sem = fun (x : Pk[F,N] × List Pk[F,N]) => match x with | (fst, h) => WeightedNetKAT.η (t, h)
- wnk_rpol {dup}.sem = fun (x : Pk[F,N] × List Pk[F,N]) => match x with | (π, h) => WeightedNetKAT.η (π, π :: h)
- wnk_rpol {~p_2; ~q}.sem = fun (h : Pk[F,N] × List Pk[F,N]) => (p_2.sem h).bind q.sem
- wnk_rpol {~w ⨀ ~p_2}.sem = fun (h : Pk[F,N] × List Pk[F,N]) => w * p_2.sem h
- wnk_rpol {~p_2 ⨁ ~q}.sem = fun (h : Pk[F,N] × List Pk[F,N]) => p_2.sem h + q.sem h
- wnk_rpol {~p_2*}.sem = fun (h : Pk[F,N] × List Pk[F,N]) => ω∑ (n : ℕ), (p_2 ^ n).sem h
Instances For
theorem
WeightedNetKAT.RPol.seq_of_prefix
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
{p : RPol 𝒮}
{h₀ h₁ : Pk[F,N] × List Pk[F,N]}
(h : (p.sem h₀) h₁ ≠ 0)
:
@[implicit_reducible]
Equations
@[implicit_reducible]
Equations
@[simp]
theorem
WeightedNetKAT.RPol.instAdd_sem
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
(p q : RPol 𝒮)
:
@[simp]
theorem
WeightedNetKAT.RPol.instZero_sem
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
:
def
WeightedNetKAT.Pol.toRPol
{𝒮 F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
[Listed N]
(p : Pol[F,N,𝒮])
:
RPol 𝒮
Equations
- (WeightedNetKAT.Pol.Filter t).toRPol = (Array.filterMap (fun (α : Pk[F,N]) => if t.test α then some wnk_rpol {@test ~α} else none) Listed.array).sum
- wnk_pol {~f ← ~n}.toRPol = (Array.map (fun (α : Pk[F,N]) => wnk_rpol {@test ~α; @mod ~α[f ↦ n]}) Listed.array).sum
- wnk_pol {dup}.toRPol = wnk_rpol {dup}
- wnk_pol {~p_2; ~q}.toRPol = wnk_rpol {~p_2.toRPol; ~q.toRPol}
- wnk_pol {~w ⨀ ~p_2}.toRPol = wnk_rpol {~w ⨀ ~p_2.toRPol}
- wnk_pol {~p_2 ⨁ ~q}.toRPol = wnk_rpol {~p_2.toRPol ⨁ ~q.toRPol}
- wnk_pol {~p_2*}.toRPol = wnk_rpol {~p_2.toRPol*}
Instances For
theorem
WeightedNetKAT.Pol.filter_toRol_sem_eq_sum
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
[Listed N]
(t : Pred[F,N])
:
theorem
WeightedNetKAT.Pol.assign_toRol_sem_eq_sum
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
[Listed N]
(f : F)
(v : N)
:
theorem
WeightedNetKAT.Pol.toRol_sem_eq_sem
{𝒮 : Type}
[Semiring 𝒮]
[OmegaCompletePartialOrder 𝒮]
[OrderBot 𝒮]
[IsPositiveOrderedAddMonoid 𝒮]
{F : Type}
[DecidableEq F]
[Listed F]
{N : Type}
[DecidableEq N]
[Listed N]
(p : Pol[F,N,𝒮])
: