changeset 379:374eb9b42d95

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 24 Jul 2023 14:17:41 +0900
parents a933c8531141
children 646ce1064288
files automaton-in-agda/src/derive.agda
diffstat 1 files changed, 9 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/automaton-in-agda/src/derive.agda	Mon Jul 24 13:32:46 2023 +0900
+++ b/automaton-in-agda/src/derive.agda	Mon Jul 24 14:17:41 2023 +0900
@@ -165,7 +165,8 @@
     sub*   : {x y : Regex Σ} → SB x y  → SB (x *) y
     sub&1  : (x y z : Regex Σ) → SB x z → SB (x & y) z
     sub&2  : (x y z : Regex Σ) → SB y z → SB (x & y) z
-    sub&<  : (x y : Regex Σ) → rank x < rank y  → SB y x → SB y (x & y) 
+    sub*&  : (x y : Regex Σ) → rank x < rank y  → SB y x → SB (y *) (x & (y *)) 
+    sub&&  : (x y z : Regex Σ) → rank z < rank (x & z)  → SB (x & y) z → SB (x & y) (z & y) 
 
 record ISB (r : Regex Σ) : Set where
     field
@@ -174,7 +175,7 @@
 
 open import bijection using ( InjectiveF ; Is )  
 
-finISB2 : {r z : Regex Σ} → FiniteSet ( ISB z) → FiniteSet (SB r z)
+finISB2 : {r z : Regex Σ} → FiniteSet (ISB z) → FiniteSet (SB r z)
 finISB2 = ?
 
 finISB : (r : Regex Σ) → FiniteSet (ISB r)
@@ -188,24 +189,19 @@
      fb00 record { s = .(x || y) ; is-sub = sunit } = ?
      fb00 record { s = s ; is-sub = (sub|1 is-sub) } = ?
      fb00 record { s = s ; is-sub = (sub|2 is-sub) } = ?
-     fb00 record { s = (z & (x || y)) ; is-sub = (sub&< z (x || y) lt is-sub) } = ? where
-         fb01 : FiniteSet (ISB z)
-         fb01 = finISB z
-finISB (x & y) = ? where
+finISB (x & y) = iso-fin (fin-∨ (inject-fin (finISB y) ? ?) (fin-∨1 (fin-∨ (finISB x) (finISB y)))) ? where
      fb00 : ISB (x & y) → ?
      fb00 record { s = .(x & y) ; is-sub = sunit } = ?
      fb00 record { s = s ; is-sub = (sub&1 .x .y .s is-sub) } = ?
      fb00 record { s = s ; is-sub = (sub&2 .x .y .s is-sub) } = ?
-     fb00 record { s = (z & (x & y)) ; is-sub = (sub&< z (x & y) lt is-sub) } = ? where
-         fb01 : FiniteSet (ISB z)
-         fb01 = finISB z
-finISB (x *) = ? where
+     fb00 record { s = (z & y) ; is-sub = (sub&& x y z lt is-sub) } = ?
+finISB (x *) = iso-fin (fin-∨ (inject-fin (finISB x) fi ? ) (fin-∨1 (finISB x) )) record { fun← = fb00 } where
+     fi : InjectiveF (ISB x) (ISB x)
+     fi = record { f = ? ; inject = ? }
      fb00 : ISB (x *) → ?
      fb00 record { s = .(x *) ; is-sub = sunit } = ?
      fb00 record { s = s ; is-sub = (sub* is-sub) } = ?
-     fb00 record { s = (z & (x *)) ; is-sub = (sub&< z (x *) lt is-sub) } = ? where
-         fb01 : FiniteSet (ISB z)
-         fb01 = finISB z
+     fb00 record { s = (z & (x *)) ; is-sub = (sub*& z x lt is-sub) } = case1 record { s = z ; is-sub = is-sub }
 
 toSB : (r : Regex   Σ) →  ISB r → Bool
 toSB r cr = ?