문제

나는 이것이 stackoverflow에 적합한지 확실하지 않지만 다른 곳을 물어볼 곳은 모른다. 요구 사항 사양의 일관성을 입증하기 위해 B- 메드를 연구하고 있으며 작업의 사전 조건을 지정할 때 논리 수학 표기법에 문제가 있습니다.

원래 문제를 단순화하면 서브 세트 인 변수가 있습니다. 비행 Flight_no x Time X Time 사이의 직교 제품 중 각 멤버 (NO, TD, TA)에 대해 비행 수, 출발 시간 및 도착 TME를 의미하지 않습니다. 수학 논리 표기법을 사용하여 어떻게 얻을 수 있습니까? 비행 그것은 TD의 가장 큰 가치를 가지고 있습니까?

도움이 되었습니까?

해결책

당신은 원하십니까? 가져 오기 그러한 요소 또는 테스트 이 속성을 만족시키는 요소는 무엇입니까? 두 번째는 작업에 합리적인 전제 조건으로 보이기 때문에 묻습니다. 나는 B- 메드를 구체적으로 모른다. 일부 문서를 살펴 보았지만 빠른 참조를 찾을 수 없으므로 일부 세부 사항에서는 잘못 될 수 있습니다.

두 번째는 이렇게 보일 것입니다 (prj2 두 번째 투영에 사용됩니다) :

HasGreatestTd(flight) = flight \in flights \and \forall flight' (flight' \in flights => prj2(flight) >= prj2(flight'))

첫 번째는 다음과 같습니다.

flightWithGreatestTd = choice({flight | HasGreatestTd(flight)})

다른 팁

내 무지를 용서해주십시오. 나는 B- 메드에 익숙하지 않습니다. 그러나 독창성 정량자를 사용할 수 없습니까? 그것은 다음과 같이 보일 것입니다.

모든 시간 동안 td ', td> td'가되는 시간 td가 존재합니다.

그리고

모든 td, td ', td' ', if td> td'및 td '> td' '에 대해 td == td'

물론 이것은 세트에 정확히 하나의 요소가 있다고 가정합니다. B-Method가 1 차 논리의 전체 힘을 허용하는지 실제로 알 수는 없지만 귀하가 이것에 가까워 질 수 있다고 가정합니다.

B.에서 함수를 정의 할 수 있습니다. 함수는 상수 값을 가지며 Abstract_Constants 절에 나열되어 속성 절에 정의됩니다. 이 구성을 사용하여 문제를 해결할 수있는 방법을 설명하려고합니다.

작은 발췌문을 따릅니다

  1. 비행 정보를 제공하는 데카르트 제품의 단축키가 도입되었습니다.
DEFINITIONS
    FLIGHT_INFO == FLIGHT_NO * TIME * TIME
  1. 4 개의 상수가 선언되고, 처음 3 개는 "액세서"이며, 마지막지도는 출발 시간이 가장 큰 비행 정보에 대한 일련의 비행 정보 세트를 제공합니다.
CONSTANTS
    flight_no, flight_departure, flight_arrival, last_flight
  1. 그런 다음 이러한 상수는 유형 및 총 기능으로 정의됩니다. 마지막 함수는 비어 있지 않은 세트를 입력해야합니다. 여기서 나는 이러한 함수를 지정하기 위해 다른 접근법을 사용했습니다. 하나는 정의 (평등)이고 다른 하나는 공리적입니다.
PROPERTIES
    // typing 
    flight_no: FLIGHT_INFO --> FLIGHT_NO &
    flight_departure: FLIGHT_INFO --> TIME &
    flight_arrival: FLIGHT_INFO --> TIME &
    last_flight : POW1(FLIGHT_INFO) --> FLIGHT_INFO &
    // value
    flight_no = %(no, dt, at).(no |-> dt |-> at : FLIGHT_INFO | no) &
    flight_departure = %(no, dt, at).(no |-> dt |-> at : FLIGHT_INFO | dt) &
    flight_arrival = %(no, dt, at).(no |-> dt |-> at : FLIGHT_INFO | at) &
    !fs.(fs : POW1(FLIGHT_INFO) =>
       last_flight(fs) : fs &
       !(fi).(fi : FLIGHT_INFO & fi : fs =>
          flight_departure(fi) <= flight_departure(last_flight(fs)))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top