Skip to content

Cannot apply rule for symbolic list with multiple elements #2391

Open
@virgil-serbanuta

Description

@virgil-serbanuta

Symbolic list unification fails with multiple elements

To reproduce:

tmp.k:

module TMP
  imports INT
  imports LIST

  syntax KItem ::= "push" | "pop"
  syntax KItem ::= Int

  rule  <k> push => .K ... </k>
        <stack> (.List => ListItem(1)) ... </stack>

  rule  <k> pop => .K ... </k>
        <stack> (ListItem(_:KItem) => .List) ... </stack>
    [label(xyzzy)]

  configuration
    <T>
      <k color="green"> .K </k>
      <stack> .List </stack>
    </T>

endmodule

tmp-proof.k:

module TMP-PROOF
  imports TMP

  claim 
      <T>
        <k> push ~> push ~> pop ~> pop ~> K:K </k>
        <stack> Stack:List </stack>
      </T>
      =>
      <T>
        <k> K </k>
        <stack> Stack </stack>
      </T>
endmodule

to run:

kompile tmp.k --backend haskell && kprove tmp-proof.k

The repl provides no reason explaining why the xyzzy rule is not applied:

Kore (0)> step 2
Kore (2)> try xyzzy
No explanation given
Kore (2)> 

Note that the claim above works with a single push/pop, i.e. <k> push ~> pop ~> K:K </k>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions