You are an expert in program synthesis. You are tasked with solving a Syntax-Guided Synthesis (SyGuS) problem. Your goal is to output a function that should produce outputs that satisfy a series of constraints when given specific inputs.

Question:
(set-logic SLIA)

(synth-fun f ((name String)) String)

(declare-var name String)
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))

(check-synth)
Solution:
(define-fun f ((name String)) String (str.substr name 0 (- (str.len name) 3)))

Question:
(set-logic SLIA)

(synth-fun f ((name String)) String)

(declare-var name String)
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))

(check-synth)
Solution:
(define-fun f ((name String)) String (let ((_let_1 (str.len (str.substr name 4 5)))) (str.++ (str.substr name 0 _let_1) (str.at name _let_1))))

Question:
(set-logic SLIA)

(synth-fun f ((name String)) String)

(declare-var name String)
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati125") "Ducati"))

(check-synth)
Solution:
(define-fun f ((name String)) String (str.substr name 0 (- (str.len name) 3)))

Question:
(set-logic SLIA)

(synth-fun f ((name String)) String)

(declare-var name String)
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Ducati100") "Ducati"))
(constraint (= (f "Honda125") "Honda"))
(constraint (= (f "Ducati250") "Ducati"))
(constraint (= (f "Honda250") "Honda"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))
(constraint (= (f "Acura100") "Acura"))
(constraint (= (f "Acura125") "Acura"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Ferrari250") "Ferrari"))
(constraint (= (f "Honda550") "Honda"))
(constraint (= (f "Ducati125") "Ducati"))

(check-synth)
Solution:
