Exemplo n.º 1
0
def test_response():
    s = gr1.response_to_gr1('p', 'q')

    assert isinstance(s, spec.GRSpec)
    assert 'p' in s.sys_vars
    assert 'q' in s.sys_vars

    # p && []!q
    s0 = spec.GRSpec(sys_vars={'p', 'q'}, sys_init={'p'}, sys_safety={'!q'})
    assert not synth.is_realizable('gr1c', s | s0)

    # []!p && []!q
    s1 = spec.GRSpec(sys_vars={'p', 'q'}, sys_safety={'!p && !q'})
    assert synth.is_realizable('gr1c', s | s1)

    # p && q
    s2 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_init={'p && q'},
    )
    assert synth.is_realizable('gr1c', s | s2)

    # alternating p, alternating q
    s3 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_safety={'p -> X !p', '!p -> X p', 'p -> X q', 'q -> X ! q'})
    assert synth.is_realizable('gr1c', s | s3)
Exemplo n.º 2
0
def test_response():
    s = gr1.response_to_gr1('p', 'q')

    assert isinstance(s, spec.GRSpec)
    assert 'p' in s.sys_vars
    assert 'q' in s.sys_vars

    s.moore = False
    s.plus_one = False
    s.qinit = '\A \E'

    # p && []!q
    s0 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_init={'p'},
        sys_safety={'!q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert not synth.is_realizable('omega', s | s0)

    # []!p && []!q
    s1 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_safety={'!p && !q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable('omega', s | s1)

    # p && q
    s2 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_init={'p && q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable('omega', s | s2)

    # alternating p, alternating q
    s3 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_safety={
            'p -> X !p',
            '!p -> X p',
            'p -> X q',
            'q -> X ! q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable('omega', s | s3)
Exemplo n.º 3
0
def test_response():
    s = gr1.response_to_gr1('p', 'q')

    assert isinstance(s, spec.GRSpec)
    assert 'p' in s.sys_vars
    assert 'q' in s.sys_vars

    s.moore = False
    s.plus_one = False
    s.qinit = '\A \E'

    # p && []!q
    s0 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_init={'p'},
        sys_safety={'!q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert not synth.is_realizable(s | s0)

    # []!p && []!q
    s1 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_safety={'!p && !q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable(s | s1)

    # p && q
    s2 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_init={'p && q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable(s | s2)

    # alternating p, alternating q
    s3 = spec.GRSpec(
        sys_vars={'p', 'q'},
        sys_safety={
            'p -> X !p',
            '!p -> X p',
            'p -> X q',
            'q -> X ! q'},
        moore=False,
        plus_one=False,
        qinit='\A \E'
    )
    assert synth.is_realizable(s | s3)
Exemplo n.º 4
0
def test_response():
    s = gr1.response_to_gr1('p', 'q')

    assert isinstance(s, spec.GRSpec)
    assert 'p' in s.sys_vars
    assert 'q' in s.sys_vars

    # p && []!q
    s0 = spec.GRSpec(
        sys_vars={'p', 'q'}, sys_init={'p'},
        sys_safety={'!q'}
    )
    assert not synth.is_realizable('gr1c', s | s0)

    # []!p && []!q
    s1 = spec.GRSpec(
        sys_vars={'p', 'q'}, sys_safety={'!p && !q'}
    )
    assert synth.is_realizable('gr1c', s | s1)

    # p && q
    s2 = spec.GRSpec(
        sys_vars={'p', 'q'}, sys_init={'p && q'},
    )
    assert synth.is_realizable('gr1c', s | s2)

    # alternating p, alternating q
    s3 = spec.GRSpec(
        sys_vars={'p', 'q'}, sys_safety={
            'p -> X !p',
            '!p -> X p',
            'p -> X q',
            'q -> X ! q'
        }
    )
    assert synth.is_realizable('gr1c', s | s3)
Exemplo n.º 5
0
def pedestrianK(Ncar, Nped, xcar, vcar, Vlow, Vhigh, xped, xcross_start):
    sys_vars = {}
    sys_vars['xcar'] = (1, Ncar)
    sys_vars['vcar'] = (Vlow, Vhigh)
    env_vars = {}
    env_vars['xped'] = (0, Nped-xped) # Possible cells pedestrian can occupy

    sys_init = {'xcar='+str(xcar), 'vcar='+str(vcar)}
    env_init = {'xped='+str(xped)}

    # Test lines:
    sys_init = {'xcar='+str(xcar)}
    env_init = set()
    # ========================= #
    sys_prog = set() # For now, no need to have progress
    env_prog = set()
    xcar_jj = xcross_start + (xped-1) - 1 # eventual goal location for car
    #sys_prog = set({'xcar = '+str(xcar_jj)})

    sys_safe = set()
    env_safe = set()

    # Environment safety specs: Static pedestrian
    for xi in range(0, Nped-xped+1):
        env_safe |= {'xped='+str(xi)+'-> X(xped='+str(xi)+')'}

    # system safety specs
   # for ii in range(Nped, 0, -1):
   #     xcar_jj = ii+(xcross_start-1)-1
   #     assert xcar_jj > 0
   #     spec1_ii = {'(xcar='+str(xcar_jj)+') && (xped='+str(ii)+')-> (vcar=0)'}
   #     sys_safe |= spec1_ii
   #     spec2_ii = {'(xcar='+str(xcar_jj)+') && !(xped='+str(ii)+')-> (!(vcar=0))'}
   #     sys_safe |= spec2_ii

    # System safety specs:
    for ii in range(1, xcross_start):
        spec2_ii = {'(xcar='+str(ii)+')-> (!(vcar=0))'}
        sys_safe |= spec2_ii
    
    # Adding system safety specifications:
    for ii in range(0, Nped-xped+1):
        xcar_jj = ii+xped+(xcross_start-1)-1
        pii = '(xped='+str(ii)+')'
        qii = '(xcar='+str(xcar_jj)+') && (vcar=0)'
        spec1_pii = response_to_gr1(pii, qii)
        qii_2 = '!((xcar='+str(xcar_jj)+') && (vcar=0))'
        pii_2 = '!(xped='+str(ii)+')'
        spec2_pii = response_to_gr1(pii_2, qii_2)
        str_aux1 = "aux_"+str(2*ii)
        str_aux2 = "aux_"+str(2*ii+1)

        sys_vars[str_aux1] = 'boolean'
        str_safe = spec1_pii.sys_safety
        str_prog = spec1_pii.sys_prog

        sys_vars[str_aux2] = 'boolean'
        str_safe2 = spec2_pii.sys_safety
        str_prog2 = spec2_pii.sys_prog
        for si in str_safe:
            sii = si.replace("aux", str_aux1)
            sys_safe |= {sii}
        for si in str_prog:
            sii = si.replace("aux", str_aux1)
            sys_prog |= {sii}
        for si in str_safe2:
            sii = si.replace("aux", str_aux2)
            sys_safe |= {sii}
        for si in str_prog2:
            sii = si.replace("aux", str_aux2)
            sys_prog |= {sii}
    # Add system dynamics to safety specs:
    for ii in range(1, Ncar+1):
        for vi in range(Vlow, Vhigh+1):
            if vi==0:
                spec_ii = {'((xcar='+str(ii)+') && (vcar=0))-> X((vcar=0 || vcar=1) && xcar='+str(ii)+')'}
                sys_safe|=spec_ii
            elif vi == Vhigh:
                xf_ii = min(ii+vi, Ncar)
                spec_ii = {'((xcar='+str(ii)+') && (vcar='+str(vi)+'))-> X((vcar='+str(vi)+'|| vcar='+str(vi-1)+') && xcar='+str(xf_ii)+')'}
                sys_safe|=spec_ii
            else:
                xf_ii = min(ii+vi, Ncar)
                spec_ii = {'((xcar='+str(ii)+') && (vcar='+str(vi)+'))-> X((vcar='+str(vi)+'|| vcar='+str(vi-1)+'|| vcar='+str(vi+1)+') && xcar='+str(xf_ii)+')'}
                sys_safe|=spec_ii
    return env_vars, sys_vars, env_init, sys_init, env_safe, sys_safe, env_prog, sys_prog