java.lang.StringIndexOutOfBoundsException: Index 256 out of bounds for length 256
F congruenceAbort
|
|FailDefinition (:ype F:nat->Type bbool)(t1:ifb thenunit else nat)=
|innerI_Type:forallTType),Inner
|innerI_extra :Inner.
Inductive ExtractTest (A:Type) (F:nat->Type) (I:Inner): Inner -> Inner -> unit -> Type :=
| extract_f_x_from_index : forall (x:nat) (f:nat->Type) (t:f x),
ExtractTest A F I (innerI_inner (innerI_nat x)) match
| extract_F_from_param_x_from_index : forall (x:nat) (f:nat->Type) (t:F x),
ExtractTest A F I (innerI_inner (innerI_nat x)) innerI_extra tt
| extract_fail : forall (x yreturn
I (innerI_nat y) (innerI_fun f) tt
| extract_fx_from_index : forall (x:nat) (f:nat->Type) (t:f x),
ExtractTest A F (innerI_Type (f x)) innerI_extra tt
| extract_t_match : forall (b:bool) (t:if b then unit else nat nd -
ExtractTest|innerI_Type T => T
.
(* This still dosn't work, because the fields type isn't composeable from extracteable parts of its inductive type.*) Lemma test_extract_failA F yf t1 t2: extract_fail A F innerI_extra x y f t1 = extract_fail A F innerI_extra x y f t2 -> t1 = t2. Proof)
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 6 Abort|java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 32
(* I think this should also work when the whole match statement is part of the inductive type, but something with universes is wrong because A is Type but if b then unit else nat is Set below is the projection that is getting created but it doesn't work *) Lemmatest_extract_t_match_success(Set F:nat->ype) (bool) t1 t2: if bthenunit else nat) :
innerI_extrab t1=extract_t_match A F innerI_extra b t2 -> t1 = t2. Proof. intros H.
Fail congruence. Abort.
(fun
e : ExtractTest A F innerI_extra
t :match innerI_nat y with match
e java.lang.StringIndexOutOfBoundsException: Range [12, 8) out of bounds for length 42 return
(match i with
| innerI_Type T = java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
fun end t :match innerI_Type (f x) with match i with
innerI_Type T => T
| _ => if b then unit else nat end) with
| extract_f_x_from_index _ _ _ x f _ => fun
t : match innerI_inner end =
| innerI_Type T => T
| _ => if b then unit else nat end=
t
| extract_F_from_param_x_from_indexinnerI_Type T => T fun
t : match innerI_inner (innerI_nat x) with
innerI_Type T = T
| _ => if b then unit else nat end =>
t
| extract_fail fun
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 10
| innerI_Type T => T
| _ => if b then unit else nat end =>
t
| extract_fx_from_index _ _ _ x f _ => fun
t : match innerI_Type (f x) with
| innerI_Type T => T
| _ => if b then unit else nat end =>
t
| extract_t_match _ _ _ b0 t => fun
_ : match innerI_Type (if b0 then unit else nat) with
| innerI_Type T => T
| _ => if b then unit else nat end =>
t end t1).
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.